(* GENERIC EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ****)
definition R_fsge_compatible: predicate (relation3 …) ≝ λRN.
- â\88\80L,T1,T2. RN L T1 T2 â\86\92 â\9dªL,T2â\9d« â\8a\86 â\9dªL,T1â\9d«.
+ â\88\80L,T1,T2. RN L T1 T2 â\86\92 â\9d¨L,T2â\9d© â\8a\86 â\9d¨L,T1â\9d©.
definition rex_fsge_compatible: predicate (relation3 …) ≝ λRN.
- â\88\80L1,L2,T. L1 ⪤[RN,T] L2 â\86\92 â\9dªL2,Tâ\9d« â\8a\86 â\9dªL1,Tâ\9d«.
+ â\88\80L1,L2,T. L1 ⪤[RN,T] L2 â\86\92 â\9d¨L2,Tâ\9d© â\8a\86 â\9d¨L1,Tâ\9d©.
definition rex_fsle_compatible: predicate (relation3 …) ≝ λRN.
- â\88\80L1,L2,T. L1 ⪤[RN,T] L2 â\86\92 â\9dªL1,Tâ\9d« â\8a\86 â\9dªL2,Tâ\9d«.
+ â\88\80L1,L2,T. L1 ⪤[RN,T] L2 â\86\92 â\9d¨L1,Tâ\9d© â\8a\86 â\9d¨L2,Tâ\9d©.
(* Basic inversions with free variables inclusion for restricted closures ***)
lemma frees_sex_conf_fsge (R):
rex_fsge_compatible R →
- â\88\80L1,T,f1. L1 â\8a¢ ð\9d\90\85+â\9dªTâ\9d« ≘ f1 →
+ â\88\80L1,T,f1. L1 â\8a¢ ð\9d\90\85+â\9d¨Tâ\9d© ≘ f1 →
∀L2. L1 ⪤[cext2 R,cfull,f1] L2 →
- â\88\83â\88\83f2. L2 â\8a¢ ð\9d\90\85+â\9dªTâ\9d« ≘ f2 & f2 ⊆ f1.
+ â\88\83â\88\83f2. L2 â\8a¢ ð\9d\90\85+â\9d¨Tâ\9d© ≘ f2 & f2 ⊆ f1.
#R #HR #L1 #T #f1 #Hf1 #L2 #H1L
lapply (HR L1 L2 T ?) /2 width=3 by ex2_intro/ #H2L
@(fsle_frees_trans_eq … H2L … Hf1) /3 width=4 by sex_fwd_length, sym_eq/
lemma frees_sex_conf_fsle (R):
rex_fsle_compatible R →
- â\88\80L1,T,f1. L1 â\8a¢ ð\9d\90\85+â\9dªTâ\9d« ≘ f1 →
+ â\88\80L1,T,f1. L1 â\8a¢ ð\9d\90\85+â\9d¨Tâ\9d© ≘ f1 →
∀L2. L1 ⪤[cext2 R,cfull,f1] L2 →
- â\88\83â\88\83f2. L2 â\8a¢ ð\9d\90\85+â\9dªTâ\9d« ≘ f2 & f1 ⊆ f2.
+ â\88\83â\88\83f2. L2 â\8a¢ ð\9d\90\85+â\9d¨Tâ\9d© ≘ f2 & f1 ⊆ f2.
#R #HR #L1 #T #f1 #Hf1 #L2 #H1L
lapply (HR L1 L2 T ?) /2 width=3 by ex2_intro/ #H2L
@(fsle_frees_conf_eq … H2L … Hf1) /3 width=4 by sex_fwd_length, sym_eq/
(* Note: we just need lveq_inv_refl: ∀L, n1, n2. L ≋ⓧ*[n1, n2] L → ∧∧ 0 = n1 & 0 = n2 *)
lemma fsge_rex_trans (R):
- â\88\80L1,T1,T2. â\9dªL1,T1â\9d« â\8a\86 â\9dªL1,T2â\9d« →
+ â\88\80L1,T1,T2. â\9d¨L1,T1â\9d© â\8a\86 â\9d¨L1,T2â\9d© →
∀L2. L1 ⪤[R,T2] L2 → L1 ⪤[R,T1] L2.
#R #L1 #T1 #T2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #Hn #Hf #L2 #HL12
elim (lveq_inj_length … Hn ?) // #H1 #H2 destruct