include "ground/relocation/gr_eq.ma".
include "ground/relocation/gr_tl.ma".
-(* TAIL FOR GENERIC RELOCATION MAPS ***********************************************************)
+(* TAIL FOR GENERIC RELOCATION MAPS *****************************************)
-(* Properties with gr_eq *)
+(* Constructions with gr_eq *************************************************)
(*** eq_refl *)
corec lemma gr_eq_refl: reflexive … gr_eq.
(*** tl_eq_repl *)
lemma gr_tl_eq_repl:
- gr_eq_repl â\80¦ (λf1,f2. ⫱f1 â\89¡ ⫱f2).
+ gr_eq_repl â\80¦ (λf1,f2. â«°f1 â\89¡ â«°f2).
#f1 #f2 * -f1 -f2 //
qed.
-(* Inversion lemmas with gr_eq ***************************************************)
+(* Inversions with gr_eq ****************************************************)
(*** eq_inv_gen *)
lemma gr_eq_inv_gen (g1) (g2):
g1 ≡ g2 →
- â\88¨â\88¨ â\88§â\88§ ⫱g1 â\89¡ ⫱g2 & ⫯⫱g1 = g1 & ⫯⫱g2 = g2
- | â\88§â\88§ ⫱g1 â\89¡ ⫱g2 & â\86\91⫱g1 = g1 & â\86\91⫱g2 = g2.
+ â\88¨â\88¨ â\88§â\88§ â«°g1 â\89¡ â«°g2 & ⫯⫰g1 = g1 & ⫯⫰g2 = g2
+ | â\88§â\88§ â«°g1 â\89¡ â«°g2 & â\86\91â«°g1 = g1 & â\86\91â«°g2 = g2.
#g1 #g2 * -g1 -g2 #f1 #f2 #g1 #g2 #f * *
/3 width=1 by and3_intro, or_introl, or_intror/
qed-.
-(* Advanced Inversion lemmas with gr_eq *)
+(* Advanced inversions with gr_eq *******************************************)
(*** gr_eq_inv_px *)
lemma gr_eq_inv_push_sn (g1) (g2):
g1 ≡ g2 → ∀f1. ⫯f1 = g1 →
- â\88§â\88§ f1 â\89¡ ⫱g2 & ⫯⫱g2 = g2.
+ â\88§â\88§ f1 â\89¡ â«°g2 & ⫯⫰g2 = g2.
#g1 #g2 #H #f1 #Hf1
elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
[ /2 width=1 by conj/
(*** gr_eq_inv_nx *)
lemma gr_eq_inv_next_sn (g1) (g2):
g1 ≡ g2 → ∀f1. ↑f1 = g1 →
- â\88§â\88§ f1 â\89¡ ⫱g2 & â\86\91⫱g2 = g2.
+ â\88§â\88§ f1 â\89¡ â«°g2 & â\86\91â«°g2 = g2.
#g1 #g2 #H #f1 #Hf1
elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
[ elim (eq_inv_gr_push_next … Hg1)
(*** gr_eq_inv_xp *)
lemma gr_eq_inv_push_dx (g1) (g2):
g1 ≡ g2 → ∀f2. ⫯f2 = g2 →
- â\88§â\88§ ⫱g1 â\89¡ f2 & ⫯⫱g1 = g1.
+ â\88§â\88§ â«°g1 â\89¡ f2 & ⫯⫰g1 = g1.
#g1 #g2 #H #f2 #Hf2
elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
[ /2 width=1 by conj/
(*** gr_eq_inv_xn *)
lemma gr_eq_inv_next_dx (g1) (g2):
g1 ≡ g2 → ∀f2. ↑f2 = g2 →
- â\88§â\88§ ⫱g1 â\89¡ f2 & â\86\91⫱g1 = g1.
+ â\88§â\88§ â«°g1 â\89¡ f2 & â\86\91â«°g1 = g1.
#g1 #g2 #H #f2 #Hf2
elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
[ elim (eq_inv_gr_push_next … Hg2)