]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/substitution/lleq_alt.ma
- advances on hereditarily free variables: now "frees" is primitive
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / substitution / lleq_alt.ma
index a209206afbfd772879bb8f01c9fbe57c8c5f5d34..a05a51d268e800b2b9d977ea04e20782fff73047 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/substitution/llpx_sn_alt1.ma".
+include "basic_2/substitution/llpx_sn_alt.ma".
 include "basic_2/substitution/lleq.ma".
 
 (* LAZY EQUIVALENCE FOR LOCAL ENVIRONMENTS **********************************)
 
-(* Alternative definition ***************************************************)
+(* Alternative definition (not recursive) ***********************************)
 
 theorem lleq_intro_alt: ∀L1,L2,T,d. |L1| = |L2| →
-                        (∀I1,I2,K1,K2,V1,V2,i. d ≤ yinj i → (∀U. ⇧[i, 1] U ≡ T → ⊥) →
+                        (∀I1,I2,K1,K2,V1,V2,i. d ≤ yinj i → L1 ⊢ i ϵ 𝐅*[d]⦃T⦄ →
                            ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 →
-                           ∧∧ I1 = I2 & V1 = V2 & K1 ≡[V1, 0] K2
+                           I1 = I2 ∧ V1 = V2
                         ) → L1 ≡[T, d] L2.
-#L1 #L2 #T #d #HL12 #IH @llpx_sn_intro_alt1 // -HL12
+#L1 #L2 #T #d #HL12 #IH @llpx_sn_alt_inv_llpx_sn @conj // -HL12
 #I1 #I2 #K1 #K2 #V1 #V2 #i #Hid #HnT #HLK1 #HLK2
-elim (IH … HnT HLK1 HLK2) -IH -HnT -HLK1 -HLK2 /2 width=1 by and3_intro/
+@(IH … HnT HLK1 HLK2) -IH -HnT -HLK1 -HLK2 //
 qed.
 
-theorem lleq_ind_alt: ∀S:relation4 ynat term lenv lenv.
-                      (∀L1,L2,T,d. |L1| = |L2| → (
-                         ∀I1,I2,K1,K2,V1,V2,i. d ≤ yinj i → (∀U. ⇧[i, 1] U ≡ T → ⊥) →
-                         ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 →
-                         ∧∧ I1 = I2 & V1 = V2 & K1 ≡[V1, 0] K2 & S 0 V1 K1 K2
-                      ) → S d T L1 L2) →
-                      ∀L1,L2,T,d. L1 ≡[T, d] L2 → S d T L1 L2.
-#S #IH1 #L1 #L2 #T #d #H @(llpx_sn_ind_alt1 … H) -L1 -L2 -T -d
-#L1 #L2 #T #d #HL12 #IH2 @IH1 -IH1 // -HL12
-#I1 #I2 #K1 #K2 #V1 #V2 #i #Hid #HnT #HLK1 #HLK2
-elim (IH2 … HnT HLK1 HLK2) -IH2 -HnT -HLK1 -HLK2 /2 width=1 by and4_intro/
-qed-.
-
 theorem lleq_inv_alt: ∀L1,L2,T,d. L1 ≡[T, d] L2 →
                       |L1| = |L2| ∧
-                      ∀I1,I2,K1,K2,V1,V2,i. d ≤ yinj i → (∀U. ⇧[i, 1] U ≡ T → ⊥) →
+                      ∀I1,I2,K1,K2,V1,V2,i. d ≤ yinj i → L1 ⊢ i ϵ 𝐅*[d]⦃T⦄ →
                       ⇩[i] L1 ≡ K1.ⓑ{I1}V1 → ⇩[i] L2 ≡ K2.ⓑ{I2}V2 →
-                      ∧∧ I1 = I2 & V1 = V2 & K1 ≡[V1, 0] K2.
-#L1 #L2 #T #d #H elim (llpx_sn_inv_alt1 … H) -H
+                      I1 = I2 ∧ V1 = V2.
+#L1 #L2 #T #d #H elim (llpx_sn_llpx_sn_alt … H) -H
 #HL12 #IH @conj //
 #I1 #I2 #K1 #K2 #V1 #V2 #i #Hid #HnT #HLK1 #HLK2
-elim (IH … HnT HLK1 HLK2) -IH -HnT -HLK1 -HLK2 /2 width=1 by and3_intro/
+@(IH … HnT HLK1 HLK2) -IH -HnT -HLK1 -HLK2 //
 qed-.