% equality preservation etoc : F == F' -> conc F M -> conc F' M' -> ({x}conv (M x) (M' x)) -> type. etoc_refl : etoc refl CF CF ([x] c_refl). etoc_then : etoc (EP1 then EP2) CF CF' ([x] c_trans (CP1 x) (CP2 x)) <- etoc EP1 CF CF'' CP1 <- etoc EP1 CF'' CF' CP2. etoc_sym : etoc (sym EP) CF CF' ([x]c_sym (CP x)) <- etoc EP CF' CF CP. etoc_comp : etoc (=@= EPF EPG) (ccomp CF (CG:conc _ M)) (ccomp (CF':conc _ N') CG') ([x] c_trans (CPF (M x)) (CVF' x (CPG x))) <- etoc EPF CF CF' CPF <- etoc EPG CG CG' CPG <- {x}cong N' (CVF' x). etoc_pair : etoc (=pair= EPF EPG) (cpair CF CG) (cpair CF' CG') ([x] c_pair (CPF x) (CPG x)) <- etoc EPF CF CF' CPF <- etoc EPG CG CG' CPG. etoc_cur : etoc (=cur= EPF) (ccur CF) (ccur CF') ([x] c_lam [y] CPF (lpair x y)) <- etoc EPF CF CF' CPF. etoc_idl : etoc id_l (ccomp cid CF) CF ([x] c_refl). etoc_idr : etoc id_r (ccomp CF cid) CF ([x] c_refl). etoc_ass : etoc ass (ccomp CF (ccomp CG CH)) (ccomp (ccomp CF CG) CH) ([x] c_refl). etoc_termu : etoc term_u cunit CF ([x] c_unit). etoc_prodl : etoc prod_l (ccomp cfst (cpair CF CG)) CF ([x] c_prl). etoc_prodr : etoc prod_r (ccomp csnd (cpair CF CG)) CG ([x] c_prr). etoc_produ : etoc prod_u (cpair (ccomp cfst CF) (ccomp csnd CF)) CF ([x] c_surj). etoc_expe : etoc exp_e (ccomp capp (cpair (ccomp (ccur CF) cfst) csnd)) (CF:conc F M) ([x] c_trans (c_app c_prl c_prr) (c_trans c_beta (CC x (c_surj:conv _ x)))) <- {x}cong M (CC x). etoc_expu : etoc exp_u (ccur (ccomp capp (cpair (ccomp CF cfst) csnd))) (CF:conc F M) ([x] c_trans (c_lam [y] c_app (c_trans c_prl (CC x y (c_prl: conv (lfst (lpair x y)) _))) (c_trans c_prr c_prr)) c_eta) <- {x}{y}cong M (CC x y). % sigma [p1:conc (app @ pair (cur fst @ fst) snd) M1] sigma [p2:conc fst M2]etoc exp_e p1 p2 C. % sigma [p1:conc (cur (app @ pair (id @ fst) snd)) M1] sigma [p2:conc id M2]etoc exp_u p1 p2 C.