(**************************************************************************)
include "basic_2/relocation/drops_lexs.ma".
-include "basic_2/s_computation/fqup_weight.ma".
include "basic_2/static/frees_drops.ma".
+include "basic_2/static/lsubf_frees.ma".
+include "basic_2/static/lfxs.ma".
include "basic_2/rt_transition/cpx_drops.ma".
+include "basic_2/rt_transition/cpx_ext.ma".
(* UNCOUNTED PARALLEL RT-TRANSITION FOR LOCAL ENV.S ON REFERRED ENTRIES *****)
(* Properties with context-sensitive free variables *************************)
-axiom pippo: āRN,RP,L1,i. ā¬*[ā», šā“iāµ] L1 ā” ā ā
- āf,L2. L1 ā¦»*[RN, RP, f] L2 ā
- ā¬*[ā», šā“iāµ] L2 ā” ā.
-(*
-#RN #RP #L1 #i #H1 #f #L2 #H2
-lapply (lexs_co_dropable_sn ā¦ H1 ā¦ H2) // -HL1 -H2
-*)
-
-
-axiom frees_inv_lifts_SO: āb,f,L,U. L ā¢ š
*ā¦Uā¦ ā” f ā
- āK. ā¬*[b, šā“1āµ] L ā” K ā āT. ā¬*[1] T ā” U ā
- K ā¢ š
*ā¦Tā¦ ā” ā«±f.
-
-axiom frees_pair_flat: āL,T,f1,I1,V1. L.ā{I1}V1 ā¢ š
*ā¦Tā¦ ā” f1 ā
- āf2,I2,V2. L.ā{I2}V2 ā¢ š
*ā¦Tā¦ ā” f2 ā
- āf0. f1 ā f2 ā” f0 ā
- āI0,I. L.ā{I0}ā{I}V1.V2 ā¢ š
*ā¦Tā¦ ā” f0.
-
-(* Basic_2A1: was: lpx_cpx_frees_trans *)
-lemma cpx_frees_trans_lexs: āh,G,L1,T1,f1. L1 ā¢ š
*ā¦T1ā¦ ā” f1 ā
- āL2. L1 ā¦»*[cpx h G, cfull, f1] L2 ā
- āT2. ā¦G, L1ā¦ ā¢ T1 ā¬[h] T2 ā
- āāf2. L2 ā¢ š
*ā¦T2ā¦ ā” f2 & f2 ā f1.
-#h #G #L1 #T1 @(fqup_wf_ind_eq ā¦ G L1 T1) -G -L1 -T1
+(* Basic_2A1: uses: lpx_cpx_frees_trans *)
+(* check sle_refl *)
+lemma cpx_frees_conf_lfpx: āh,G,L1,T1,f1. L1 ā¢ š
*ā¦T1ā¦ ā” f1 ā
+ āL2. L1 āŖ¤*[cpx_ext h G, cfull, f1] L2 ā
+ āT2. ā¦G, L1ā¦ ā¢ T1 ā¬[h] T2 ā
+ āāf2. L2 ā¢ š
*ā¦T2ā¦ ā” f2 & f2 ā f1.
+#h #G #L1 #T1 @(fqup_wf_ind_eq (ā) ā¦ G L1 T1) -G -L1 -T1
#G0 #L0 #U0 #IH #G #L1 * *
[ -IH #s #HG #HL #HU #g1 #H1 #L2 #_ #U2 #H0 destruct
lapply (frees_inv_sort ā¦ H1) -H1 #Hg1
elim (cpx_inv_sort1 ā¦ H0) -H0 #H destruct
- /3 width=3 by frees_sort_gen, sle_refl, ex2_intro/
+ /3 width=3 by frees_sort, sle_refl, ex2_intro/
| #i #HG #HL #HU #g1 #H1 #L2 #H2 #U2 #H0 destruct
elim (frees_inv_lref_drops ā¦ H1) -H1 *
- [ -IH #HL1 #Hg1
+ [ -IH #f1 #HL1 #Hf1 #H destruct
elim (cpx_inv_lref1_drops ā¦ H0) -H0
- [ #H destruct lapply (pippo ā¦ HL1 ā¦ H2) -HL1 -H2
- /3 width=3 by frees_lref_atom, sle_refl, ex2_intro/
- | * -H2 -Hg1 #I #K1 #V1 #V2 #HLK1
+ [ #H destruct
+ /4 width=9 by frees_atom_drops, drops_atom2_lexs_conf, sle_refl, ex2_intro/
+ | * -H2 -Hf1 #I #K1 #V1 #V2 #HLK1
lapply (drops_TF ā¦ HLK1) -HLK1 #HLK1
lapply (drops_mono ā¦ HLK1 ā¦ HL1) -L1 #H destruct
]
| #f1 #I #K1 #V1 #Hf1 #HLK1 #H destruct
elim (cpx_inv_lref1_drops ā¦ H0) -H0
[ #H destruct
- elim (lexs_drops_conf_next ā¦ H2 ā¦ HLK1) -H2 [ |*: // ] #K2 #V2 #HLK2 #HK12 #HV12
+ elim (lexs_drops_conf_next ā¦ H2 ā¦ HLK1) -H2 [ |*: // ] #Z #K2 #HLK2 #HK12 #H
+ elim (ext2_inv_pair_sn ā¦ H) -H #V2 #HV12 #H destruct
elim (IH ā¦ Hf1 ā¦ HK12 ā¦ HV12) /2 width=2 by fqup_lref/ -L1 -K1 -V1 #f2 #Hf2 #Hf21
- /4 width=7 by frees_lref_pushs, frees_lref_pair, drops_refl, sle_next, ex2_intro, sle_pushs/
- | * #J #Y #X #V2 #H #HV12 #HVU2
+ /4 width=7 by frees_lref_pushs, frees_pair_drops, drops_refl, sle_pushs, sle_next, ex2_intro/
+ | * #Z #Y #X #V2 #H #HV12 #HVU2
lapply (drops_mono ā¦ H ā¦ HLK1) -H #H destruct
- elim (lexs_drops_conf_next ā¦ H2 ā¦ HLK1) -H2 [ |*: // ] #K2 #V0 #HLK2 #HK12 #_
+ elim (lexs_drops_conf_next ā¦ H2 ā¦ HLK1) -H2 [ |*: // ] #I2 #K2 #HLK2 #HK12 #H
+ elim (ext2_inv_pair_sn ā¦ H) -H #V0 #_ #H destruct
lapply (drops_isuni_fwd_drop2 ā¦ HLK2) // -V0 #HLK2
elim (IH ā¦ Hf1 ā¦ HK12 ā¦ HV12) /2 width=2 by fqup_lref/ -I -L1 -K1 -V1 #f2 #Hf2 #Hf21
lapply (frees_lifts ā¦ Hf2 ā¦ HLK2 ā¦ HVU2 ??) /4 width=7 by sle_weak, ex2_intro, sle_pushs/
]
+ | #f1 #I #K1 #HLK1 #Hf1 #H destruct
+ elim (cpx_inv_lref1_drops ā¦ H0) -H0
+ [ -IH #H destruct
+ elim (lexs_drops_conf_next ā¦ H2 ā¦ HLK1) -H2 -HLK1 [ |*: // ] #Z #K2 #HLK2 #_ #H
+ lapply (ext2_inv_unit_sn ā¦ H) -H #H destruct
+ /3 width=3 by frees_unit_drops, sle_refl, ex2_intro/
+ | * -H2 -Hf1 #Z #Y1 #X1 #X2 #HLY1
+ lapply (drops_mono ā¦ HLK1 ā¦ HLY1) -L1 #H destruct
+ ]
]
| -IH #l #HG #HL #HU #g1 #H1 #L2 #_ #U2 #H0 destruct
lapply (frees_inv_gref ā¦ H1) -H1 #Hg1
lapply (cpx_inv_gref1 ā¦ H0) -H0 #H destruct
- /3 width=3 by frees_gref_gen, sle_refl, ex2_intro/
+ /3 width=3 by frees_gref, sle_refl, ex2_intro/
| #p #I #V1 #T1 #HG #HL #HU #g1 #H1 #L2 #H2 #U2 #H0 destruct
elim (frees_inv_bind ā¦ H1) -H1 #gV1 #gT1 #HgV1 #HgT1 #Hg1
elim (cpx_inv_bind1 ā¦ H0) -H0 *
[ #V2 #T2 #HV12 #HT12 #H destruct
lapply (sle_lexs_trans ā¦ H2 gV1 ?) /2 width=2 by sor_inv_sle_sn/ #HL12V
lapply (sle_lexs_trans ā¦ H2 (ā«±gT1) ?) /2 width=2 by sor_inv_sle_dx/ -H2 #HL12T
- lapply (lexs_inv_tl ā¦ I ā¦ HL12T ā¦ HV12 ?) // -HL12T #HL12T
+ lapply (lexs_inv_tl ā¦ (BPair I V1) (BPair I V2) ā¦ HL12T ??) /2 width=1 by ext2_pair/ -HL12T #HL12T
elim (IH ā¦ HgV1 ā¦ HL12V ā¦ HV12) // -HgV1 -HL12V -HV12 #gV2 #HgV2 #HgV21
elim (IH ā¦ HgT1 ā¦ HL12T ā¦ HT12) // -IH -HgT1 -HL12T -HT12 #gT2 #HgT2 #HgT21
elim (sor_isfin_ex gV2 (ā«±gT2)) /3 width=3 by frees_fwd_isfin, isfin_tl/
/4 width=10 by frees_bind, monotonic_sle_sor, sle_tl, ex2_intro/
| #T2 #HT12 #HUT2 #H0 #H1 destruct -HgV1
lapply (sle_lexs_trans ā¦ H2 (ā«±gT1) ?) /2 width=2 by sor_inv_sle_dx/ -H2 #HL12T
- lapply (lexs_inv_tl ā¦ Abbr ā¦ V1 V1 HL12T ??) // -HL12T #HL12T
+ lapply (lexs_inv_tl ā¦ (BPair Abbr V1) (BPair Abbr V1) ā¦ HL12T ??) /2 width=1 by ext2_pair/ -HL12T #HL12T
elim (IH ā¦ HgT1 ā¦ HL12T ā¦ HT12) // -L1 -T1 #gT2 #HgT2 #HgT21
lapply (frees_inv_lifts_SO (ā) ā¦ HgT2 ā¦ L2 ā¦ HUT2) [ /3 width=1 by drops_refl, drops_drop/ ] -V1 -T2
/5 width=6 by sor_inv_sle_dx, sle_trans, sle_tl, ex2_intro/
lapply (sle_lexs_trans ā¦ H2 gT0 ?) /2 width=2 by sor_inv_sle_dx/ -H2 #H2
lapply (sle_lexs_trans ā¦ H2 gW1 ?) /2 width=2 by sor_inv_sle_sn/ #HL12W
lapply (sle_lexs_trans ā¦ H2 (ā«±gT1) ?) /2 width=2 by sor_inv_sle_dx/ -H2 #HL12T
- lapply (lexs_inv_tl ā¦ Abst ā¦ HL12T ā¦ HW12 ?) // -HL12T #HL12T
+ lapply (lexs_inv_tl ā¦ (BPair Abst W1) (BPair Abst W2) ā¦ HL12T ??) /2 width=1 by ext2_pair, I/ -HL12T #HL12T
+ elim (sor_isfin_ex gV1 gW1) /2 width=3 by frees_fwd_isfin/ #g0 #Hg0 #_
+ lapply (sor_assoc_sn ā¦ Hg1 ā¦ HgT0 ā¦ Hg0) -Hg1 -HgT0 #Hg1
+ lapply (sor_comm ā¦ Hg0) -Hg0 #Hg0
elim (IH ā¦ HgV1 ā¦ HL12V ā¦ HV12) // -HgV1 -HL12V -HV12 #gV2 #HgV2 #HgV21
elim (IH ā¦ HgW1 ā¦ HL12W ā¦ HW12) // -HgW1 -HL12W -HW12 #gW2 #HgW2 #HgW21
elim (IH ā¦ HgT1 ā¦ HL12T ā¦ HT12) // -IH -HgT1 -HL12T -HT12 #gT2 #HgT2 #HgT21
+ elim (sor_isfin_ex (ā«±gT2) gV2) /3 width=3 by frees_fwd_isfin, isfin_tl/ #gVT2 #HgVT2 #_
+ elim (lsubf_beta_tl_dx ā¦ HgV2 ā¦ HgVT2 ā¦ W2) [ |*: /1 width=3 by lsubf_refl/ ] #gT0 #HL2 #HgT02
+ lapply (lsubf_frees_trans ā¦ HgT2 ā¦ HL2) -HgT2 -HL2 #HgT0
+ lapply (sor_comm ā¦ HgVT2) -HgVT2 #HgVT2 (**) (* this should be removed *)
elim (sor_isfin_ex gW2 gV2) /2 width=3 by frees_fwd_isfin/ #gV0 #HgV0 #H
- elim (sor_isfin_ex gV0 (ā«±gT2)) /3 width=3 by frees_fwd_isfin, isfin_tl/ -H #g2 #Hg2 #_
- @(ex2_intro ā¦ g2)
- [ @(frees_bind ā¦ Hg2) /2 width=5 by frees_flat/ ]
+ elim (sor_isfin_ex gV0 (ā«±gT0)) /3 width=3 by frees_fwd_isfin, isfin_tl/ -H #g2 #Hg2 #_
+ @(ex2_intro ā¦ g2) /3 width=5 by frees_flat, frees_bind/ -h -p -G -L1 -L2 -V1 -V2 -W1 -W2 -T1 -T2
+ @(sor_inv_sle ā¦ Hg2) -Hg2
+ [ /3 width=11 by sor_inv_sle_sn_trans, monotonic_sle_sor/
+ | @(sle_trans ā¦ HgT02) -HgT02
+ /3 width=8 by monotonic_sle_sor, sor_inv_sle_dx_trans, sle_tl/
+ ] (**) (* full auto too slow *)
| #p #V2 #V #W1 #W2 #T1 #T2 #HV12 #HV2 #HW12 #HT12 #H0 #H1 #H destruct
elim (frees_inv_bind ā¦ HgT0) -HgT0 #gW1 #gT1 #HgW1 #HgT1 #HgT0
lapply (sle_lexs_trans ā¦ H2 gV1 ?) /2 width=2 by sor_inv_sle_sn/ #HL12V
lapply (sle_lexs_trans ā¦ H2 gT0 ?) /2 width=2 by sor_inv_sle_dx/ -H2 #H2
lapply (sle_lexs_trans ā¦ H2 gW1 ?) /2 width=2 by sor_inv_sle_sn/ #HL12W
lapply (sle_lexs_trans ā¦ H2 (ā«±gT1) ?) /2 width=2 by sor_inv_sle_dx/ -H2 #HL12T
- lapply (lexs_inv_tl ā¦ Abbr ā¦ HL12T ā¦ HW12 ?) // -HL12T #HL12T
+ lapply (lexs_inv_tl ā¦ (BPair Abbr W1) (BPair Abbr W2) ā¦ HL12T ??) /2 width=1 by ext2_pair, I/ -HL12T #HL12T
elim (sor_isfin_ex gV1 gW1) /2 width=3 by frees_fwd_isfin/ #g0 #Hg0 #_
- lapply (sor_trans2 ā¦ Hg1 ā¦ HgT0 ā¦ Hg0) -Hg1 -HgT0 #Hg1
+ lapply (sor_assoc_sn ā¦ Hg1 ā¦ HgT0 ā¦ Hg0) -Hg1 -HgT0 #Hg1
elim (IH ā¦ HgV1 ā¦ HL12V ā¦ HV12) // -HgV1 -HL12V -HV12 #gV2 #HgV2 #HgV21
elim (IH ā¦ HgW1 ā¦ HL12W ā¦ HW12) // -HgW1 -HL12W -HW12 #gW2 #HgW2 #HgW21
elim (IH ā¦ HgT1 ā¦ HL12T ā¦ HT12) // -IH -HgT1 -HL12T -HT12 #gT2 #HgT2 #HgT21
elim (sor_isfin_ex (āgV2) gT2) /3 width=3 by frees_fwd_isfin, isfin_push/ #gV0 #HgV0 #H
elim (sor_isfin_ex gW2 (ā«±gV0)) /3 width=3 by frees_fwd_isfin, isfin_tl/ -H #g2 #Hg2 #_
elim (sor_isfin_ex gW2 gV2) /2 width=3 by frees_fwd_isfin/ #g #Hg #_
- lapply (sor_trans2 ā¦ Hg2 ā¦ (ā«±gT2) ā¦ Hg) /2 width=1 by sor_tl/ #Hg2
- lapply (frees_lifts (ā) ā¦ HgV2 ā¦ (L2.āW2) ā¦ HV2 ??) [4: |*: /3 width=3 by drops_refl, drops_drop/ ] -V2 #HgV
- lapply (sor_sym ā¦ Hg) -Hg #Hg
+ lapply (sor_assoc_sn ā¦ Hg2 ā¦ (ā«±gT2) ā¦ Hg) /2 width=1 by sor_tl/ #Hg2
+ lapply (frees_lifts (ā) ā¦ HgV2 ā¦ (L2.āW2) ā¦ HV2 ??)
+ [4: lapply (sor_comm ā¦ Hg) |*: /3 width=3 by drops_refl, drops_drop/ ] -V2 (**) (* full auto too slow *)
/4 width=10 by frees_flat, frees_bind, monotonic_sle_sor, sle_tl, ex2_intro/
]
]
+qed-.
-lemma cpx_frees_trans: āh,o,G. frees_trans (cpx h o G).
-/2 width=8 by lpx_cpx_frees_trans/ qed-.
+(* Basic_2A1: uses: cpx_frees_trans *)
+lemma cpx_frees_conf: āh,G. R_frees_confluent (cpx h G).
+/4 width=7 by cpx_frees_conf_lfpx, lexs_refl, ext2_refl/ qed-.
-lemma lpx_frees_trans: āh,o,G,L1,L2. ā¦G, L1ā¦ ā¢ ā”[h, o] L2 ā
- āU,i. L2 ā¢ i Ļµ š
*[0]ā¦Uā¦ ā L1 ā¢ i Ļµ š
*[0]ā¦Uā¦.
-/2 width=8 by lpx_cpx_frees_trans/ qed-.
+(* Basic_2A1: uses: lpx_frees_trans *)
+lemma lfpx_frees_conf: āh,G. lexs_frees_confluent (cpx_ext h G) cfull.
+/2 width=7 by cpx_frees_conf_lfpx/ qed-.