(* GENERIC RELOCATION FOR BINDERS *******************************************)
-definition liftsb: rtmap → relation bind ≝
+definition liftsb: pr_map → relation bind ≝
λf. ext2 (lifts f).
-interpretation "uniform relocation (binder for local environments)"
- 'RLiftStar i I1 I2 = (liftsb (uni i) I1 I2).
-
interpretation "generic relocation (binder for local environments)"
'RLiftStar f I1 I2 = (liftsb f I1 I2).
+interpretation "uniform relocation (binder for local environments)"
+ 'RLift i I1 I2 = (liftsb (pr_uni i) I1 I2).
+
(* Basic_inversion lemmas **************************************************)
-lemma liftsb_inv_unit_sn: ∀f,I,Z2. ⇧*[f] BUnit I ≘ Z2 → Z2 = BUnit I.
+lemma liftsb_inv_unit_sn (f):
+ ∀I,Z2. ⇧*[f] BUnit I ≘ Z2 → Z2 = BUnit I.
/2 width=2 by ext2_inv_unit_sn/ qed-.
-lemma liftsb_inv_pair_sn: ∀f:rtmap. ∀Z2,I,V1. ⇧*[f] BPair I V1 ≘ Z2 →
- ∃∃V2. ⇧*[f] V1 ≘ V2 & Z2 = BPair I V2.
+lemma liftsb_inv_pair_sn (f):
+ ∀Z2,I,V1. ⇧*[f] BPair I V1 ≘ Z2 →
+ ∃∃V2. ⇧*[f] V1 ≘ V2 & Z2 = BPair I V2.
/2 width=1 by ext2_inv_pair_sn/ qed-.
-lemma liftsb_inv_unit_dx: ∀f,I,Z1. ⇧*[f] Z1 ≘ BUnit I → Z1 = BUnit I.
+lemma liftsb_inv_unit_dx (f):
+ ∀I,Z1. ⇧*[f] Z1 ≘ BUnit I → Z1 = BUnit I.
/2 width=2 by ext2_inv_unit_dx/ qed-.
-lemma liftsb_inv_pair_dx: ∀f:rtmap. ∀Z1,I,V2. ⇧*[f] Z1 ≘ BPair I V2 →
- ∃∃V1. ⇧*[f] V1 ≘ V2 & Z1 = BPair I V1.
+lemma liftsb_inv_pair_dx (f):
+ ∀Z1,I,V2. ⇧*[f] Z1 ≘ BPair I V2 →
+ ∃∃V1. ⇧*[f] V1 ≘ V2 & Z1 = BPair I V1.
/2 width=1 by ext2_inv_pair_dx/ qed-.
(* Basic properties *********************************************************)
-lemma liftsb_eq_repl_back: ∀I1,I2. eq_repl_back … (λf. ⇧*[f] I1 ≘ I2).
+lemma liftsb_eq_repl_back: ∀I1,I2. pr_eq_repl_back … (λf. ⇧*[f] I1 ≘ I2).
#I1 #I2 #f1 * -I1 -I2 /3 width=3 by lifts_eq_repl_back, ext2_pair/
qed-.
-lemma liftsb_refl: ∀f. 𝐈⦃f⦄ → reflexive … (liftsb f).
+lemma liftsb_refl (f): 𝐈❪f❫ → reflexive … (liftsb f).
/3 width=1 by lifts_refl, ext2_refl/ qed.
lemma liftsb_total: ∀I1,f. ∃I2. ⇧*[f] I1 ≘ I2.
/3 width=2 by ext2_unit, ext2_pair, ex_intro/
qed-.
-lemma liftsb_split_trans: ∀f,I1,I2. ⇧*[f] I1 ≘ I2 →
- ∀f1,f2. f2 ⊚ f1 ≘ f →
- ∃∃I. ⇧*[f1] I1 ≘ I & ⇧*[f2] I ≘ I2.
+lemma liftsb_split_trans (f):
+ ∀I1,I2. ⇧*[f] I1 ≘ I2 → ∀f1,f2. f2 ⊚ f1 ≘ f →
+ ∃∃I. ⇧*[f1] I1 ≘ I & ⇧*[f2] I ≘ I2.
#f #I1 #I2 * -I1 -I2 /2 width=3 by ext2_unit, ex2_intro/
#I #V1 #V2 #HV12 #f1 #f2 #Hf elim (lifts_split_trans … HV12 … Hf) -f
/3 width=3 by ext2_pair, ex2_intro/
(* Basic forward lemmas *****************************************************)
-lemma liftsb_fwd_isid: ∀f,I1,I2. ⇧*[f] I1 ≘ I2 → 𝐈⦃f⦄ → I1 = I2.
+lemma liftsb_fwd_isid (f):
+ ∀I1,I2. ⇧*[f] I1 ≘ I2 → 𝐈❪f❫ → I1 = I2.
#f #I1 #I2 * -I1 -I2 /3 width=3 by lifts_fwd_isid, eq_f2/
qed-.