∃∃K2,L2. lpx R K1 K2 & lpx R L1 L2 & L = K2 @@ L2.
#R #L1 elim L1 -L1 normalize
[ #K1 #K2 #HK12
- @(ex3_2_intro … K2 (⋆)) // (**) (* explicit constructor, /2 width=5/ does not work *)
+ @(ex3_2_intro … K2 (⋆)) // (**) (* explicit constructor, /2 width=5/ does not work *)
| #L1 #I #V1 #IH #K1 #X #H
elim (lpx_inv_pair1 … H) -H #L #V2 #H1 #HV12 #H destruct
elim (IH … H1) -IH -H1 #K2 #L2 #HK12 #HL12 #H destruct
∃∃K1,L1. lpx R K1 K2 & lpx R L1 L2 & L = K1 @@ L1.
#R #L2 elim L2 -L2 normalize
[ #K2 #K1 #HK12
- @(ex3_2_intro … K1 (⋆)) // (**) (* explicit constructor, /2 width=5/ does not work *)
+ @(ex3_2_intro … K1 (⋆)) // (**) (* explicit constructor, /2 width=5/ does not work *)
| #L2 #I #V2 #IH #K2 #X #H
elim (lpx_inv_pair2 … H) -H #L #V1 #H1 #HV12 #H destruct
elim (IH … H1) -IH -H1 #K1 #L1 #HK12 #HL12 #H destruct
@(ex3_2_intro … HK12) [2: /2 width=2/ | skip | // ] (* explicit constructor, /3 width=5/ does not work *)
]
-qed-.
+qed-.
(* Basic properties *********************************************************)
elim (lpx_inv_pair1 … H) -H #K2 #V2 #HK2 #HV2 #H destruct /3 width=3/
qed.
-lemma lpx_conf: ∀R. Confluent ? R → Confluent … (lpx R).
+lemma lpx_conf: ∀R. confluent ? R → confluent … (lpx R).
#R #HR #L0 #L1 #H elim H -L1
[ #X #H >(lpx_inv_atom1 … H) -X /2 width=3/
| #I #K0 #K1 #V0 #V1 #_ #HV01 #IHK01 #X #H
]
qed.
-lemma lpx_TC_inj: ∀R,L1,L2. lpx R L1 L2 → lpx (TC … R) L1 L2.
+lemma lpx_TC_inj: ∀R,L1,L2. lpx R L1 L2 → lpx (TC … R) L1 L2.
#R #L1 #L2 #H elim H -L1 -L2 // /3 width=1/
qed.