]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/computation/lpxs_lleq.ma
some advances on reduction
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / computation / lpxs_lleq.ma
index 522d36f971e86c998600d667595bbf3a677f06e6..a919045df2a6b7621ae1f9a6732fb72c5c136b73 100644 (file)
@@ -20,75 +20,6 @@ include "basic_2/computation/lpxs_cpxs.ma".
 
 (* Advanced properties ******************************************************)
 
-fact le_repl_sn_aux: ∀x,y,z:nat. x ≤ z → x = y → y ≤ z.
-// qed-.
-
-axiom cpxs_cpys_conf_lpxs: ∀h,g,G,d,e.
-                           ∀L0,T0,T1. ⦃G, L0⦄ ⊢ T0 ➡*[h, g] T1 →
-                           ∀T2. ⦃G, L0⦄ ⊢ T0 ▶*[d, e] T2 →
-                           ∀L1. ⦃G, L0⦄ ⊢ ➡*[h, g] L1 →
-                           ∃∃T.  ⦃G, L1⦄ ⊢ T1 ▶*[d, e] T & ⦃G, L0⦄ ⊢ T2 ➡*[h, g] T.
-
-axiom cpxs_conf_lpxs_lpys: ∀h,g,G,d,e.
-                           ∀I,L0,V0,T0,T1. ⦃G, L0.ⓑ{I}V0⦄ ⊢ T0 ➡*[h, g] T1 →
-                           ∀L1. ⦃G, L0⦄ ⊢ ➡*[h, g] L1 → ∀V2. ⦃G, L0⦄ ⊢ V0 ▶*[d, e] V2 →
-                           ∃∃T. ⦃G, L1.ⓑ{I}V0⦄  ⊢ T1 ▶*[⫯d, e] T & ⦃G, L0.ⓑ{I}V2⦄ ⊢ T0 ➡*[h, g] T.
-
-
-include "basic_2/reduction/cpx_cpys.ma".
-
-fact pippo_aux: ∀h,g,G,L1,T,T1,d,e. ⦃G, L1⦄ ⊢ T ▶*[d, e] T1 → e = ∞ →
-                ∀L2. ⦃G, L1⦄ ⊢ ➡*[h, g] L2 →
-                ∃∃T2. ⦃G, L2⦄ ⊢ T ▶*[d, e] T2 & ⦃G, L1⦄ ⊢ T1 ➡*[h, g] T2 &
-                      L1 ⋕[T, d] L2 ↔ T1 = T2.
-#h #g #G #L1 #T #T1 #d #e #H @(cpys_ind_alt … H) -G -L1 -T -T1 -d -e [ * ]
-[ /5 width=5 by lpxs_fwd_length, lleq_sort, ex3_intro, conj/
-| #i #G #L1 elim (lt_or_ge i (|L1|)) [2: /6 width=6 by lpxs_fwd_length, lleq_free, le_repl_sn_aux, ex3_intro, conj/ ]
-  #Hi #d elim (ylt_split i d) [ /5 width=5 by lpxs_fwd_length, lleq_skip, ex3_intro, conj/ ]
-  #Hdi #e #He #L2 elim (lleq_dec (#i) L1 L2 d) [ /4 width=5 by lpxs_fwd_length, ex3_intro, conj/ ]
-  #HnL12 #HL12 elim (ldrop_O1_lt L1 i) // -Hi #I #K1 #V1 #HLK1
-  elim (lpxs_ldrop_conf … HLK1 … HL12) -HL12 #X #H #HLK2
-  elim (lpxs_inv_pair1 … H) -H #K2 #V2 #HK12 #HV12 #H destruct
-  elim (lift_total V2 0 (i+1)) #W2 #HVW2
-  @(ex3_intro … W2) /2 width=7 by cpxs_delta, cpys_subst/ -I -K1 -V1 -Hdi
-  @conj #H [ elim HnL12 // | destruct elim (lift_inv_lref2_be … HVW2) // ]
-| /5 width=5 by lpxs_fwd_length, lleq_gref, ex3_intro, conj/
-| #I #G #L1 #K1 #V #V1 #T1 #i #d #e #Hdi #Hide #HLK1 #HV1 #HVT1 #_ #He #L2 #HL12 destruct
-  elim (lpxs_ldrop_conf … HLK1 … HL12) -HL12 #X #H #HLK2
-  elim (lpxs_inv_pair1 … H) -H #K2 #W #HK12 #HVW #H destruct
-  elim (cpxs_cpys_conf_lpxs … HVW … HV1 … HK12) -HVW -HV1 -HK12 #W1 #HW1 #VW1
-  elim (lift_total W1 0 (i+1)) #U1 #HWU1
-  lapply (ldrop_fwd_drop2 … HLK1) -HLK1 #HLK1
-  @(ex3_intro … U1) /2 width=10 by cpxs_lift, cpys_subst/
-| #a #I #G #L #V #V1 #T #T1 #d #e #HV1 #_ #IHV1 #IHT1 #He #L2 #HL12
-  elim (IHV1 … HL12) // -IHV1 #V2 #HV2 #HV12 * #H1V #H2V
-  elim (IHT1 … (L2.ⓑ{I}V2)) /4 width=3 by lpxs_cpx_trans, lpxs_pair, cpys_cpx/ -IHT1 -He #T2 #HT2 #HT12 * #H1T #H2T
-  elim (cpxs_conf_lpxs_lpys … HT12 … HL12 … HV1) -HT12 -HL12 -HV1 #T0 #HT20 #HT10
-  @(ex3_intro … (ⓑ{a,I}V2.T0))
-  [ @cpys_bind // @(cpys_trans_eq … T2) /3 width=5 by lsuby_cpys_trans, lsuby_succ/
-  | /2 width=1 by cpxs_bind/
-  | @conj #H destruct
-    [ elim (lleq_inv_bind … H) -H #HV #HT >H1V -H1V // 
-    | @lleq_bind /2 width=1/     
-  
-   
-     /3 width=5 by lsuby_cpys_trans, lsuby_succ/
-| #I #G #L #V #V1 #T #T1 #d #e #HV1 #HT1 #IHV1 #IHT1 #He #L2 #HL12
-  elim (IHV1 … HL12) // -IHV1 #V2 #HV2 #HV12 * #H1V #H2V
-  elim (IHT1 … HL12) // -IHT1 #T2 #HT2 #HT12 * #H1T #H2T -He -HL12
-  @(ex3_intro … (ⓕ{I}V2.T2)) /2 width=1 by cpxs_flat, cpys_flat/
-  @conj #H destruct [2: /3 width=1 by lleq_flat/ ]
-  elim (lleq_inv_flat … H) -H /3 width=1 by eq_f2/
-]
-  
-  
-  
-    [ 
-    | @cpxs_bind //
-      @(lpx_cpxs_trans … HT12)
-|
-]  
-
 axiom lleq_lpxs_trans: ∀h,g,G,L1,L2,T,d. L1 ⋕[T, d] L2 → ∀K2. ⦃G, L2⦄ ⊢ ➡*[h, g] K2 →
                        ∃∃K1. ⦃G, L1⦄ ⊢ ➡*[h, g] K1 & K1 ⋕[T, d] K2.
 (*