]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambda_delta/Basic_2/reducibility/ltpr_ldrop.ma
- first properties of strongly normalizing terms
[helm.git] / matita / matita / contribs / lambda_delta / Basic_2 / reducibility / ltpr_ldrop.ma
index 9dd48e06272474bf33b13ee14e42b90c38f8b703..5c725a948508bdc620f0a5dd8be197f737e3ff1b 100644 (file)
@@ -35,7 +35,7 @@ lemma ltpr_ldrop_conf: ∀L1,K1,d,e. ⇩[d, e] L1 ≡ K1 → ∀L2. L1 ➡ L2 
 qed.
 
 (* Basic_1: was: wcpr0_ldrop_back *)
-lemma ltpr_ldrop_trans: ∀L1,K1,d,e. ⇩[d, e] L1 ≡ K1 → ∀K2. K1 ➡ K2 →
+lemma ldrop_ltpr_trans: ∀L1,K1,d,e. ⇩[d, e] L1 ≡ K1 → ∀K2. K1 ➡ K2 →
                         ∃∃L2. ⇩[d, e] L2 ≡ K2 & L1 ➡ L2.
 #L1 #K1 #d #e #H elim H -L1 -K1 -d -e
 [ #d #e #X #H >(ltpr_inv_atom1 … H) -H /2 width=3/
@@ -50,3 +50,21 @@ lemma ltpr_ldrop_trans: ∀L1,K1,d,e. ⇩[d, e] L1 ≡ K1 → ∀K2. K1 ➡ K2 
   elim (IHLK1 … HK12) -K1 /3 width=5/
 ]
 qed.
+
+fact ltpr_ldrop_trans_O1_aux: ∀L2,K2,d,e. ⇩[d, e] L2 ≡ K2 → ∀L1. L1 ➡ L2 →
+                              d = 0 → ∃∃K1. ⇩[0, e] L1 ≡ K1 & K1 ➡ K2.
+#L2 #K2 #d #e #H elim H -L2 -K2 -d -e
+[ #d #e #X #H >(ltpr_inv_atom2 … H) -H /2 width=3/
+| #K2 #I #V2 #X #H
+  elim (ltpr_inv_pair2 … H) -H #K1 #V1 #HK12 #HV12 #H destruct /3 width=5/
+| #L2 #K2 #I #V2 #e #_ #IHLK2 #X #H #_
+  elim (ltpr_inv_pair2 … H) -H #L1 #V1 #HL12 #HV12 #H destruct
+  elim (IHLK2 … HL12 ?) -L2 // /3 width=3/
+| #L2 #K2 #I #V2 #W2 #d #e #_ #_ #_ #L1 #_
+  >commutative_plus normalize #H destruct
+]
+qed.
+
+lemma ltpr_ldrop_trans_O1: ∀L1,L2. L1 ➡ L2 → ∀K2,e. ⇩[0, e] L2 ≡ K2 →
+                           ∃∃K1. ⇩[0, e] L1 ≡ K1 & K1 ➡ K2.
+/2 width=5/ qed.