(* BASIC TERM VECTOR RELOCATION *********************************************)
inductive liftv (l,m:nat) : relation (list term) ≝
-| liftv_nil : liftv l m (â\97\8a) (â\97\8a)
+| liftv_nil : liftv l m (â\92º) (â\92º)
| liftv_cons: ∀T1s,T2s,T1,T2.
⬆[l, m] T1 ≡ T2 → liftv l m T1s T2s →
- liftv l m (T1 @ T1s) (T2 @ T2s)
+ liftv l m (T1 ⨮ T1s) (T2 ⨮ T2s)
.
interpretation "relocation (vector)" 'RLift l m T1s T2s = (liftv l m T1s T2s).
(* Basic inversion lemmas ***************************************************)
-fact liftv_inv_nil1_aux: â\88\80T1s,T2s,l,m. â¬\86[l, m] T1s â\89¡ T2s â\86\92 T1s = â\97\8a â\86\92 T2s = â\97\8a.
+fact liftv_inv_nil1_aux: â\88\80T1s,T2s,l,m. â¬\86[l, m] T1s â\89¡ T2s â\86\92 T1s = â\92º â\86\92 T2s = â\92º.
#T1s #T2s #l #m * -T1s -T2s //
#T1s #T2s #T1 #T2 #_ #_ #H destruct
qed-.
-lemma liftv_inv_nil1: â\88\80T2s,l,m. â¬\86[l, m] â\97\8a â\89¡ T2s â\86\92 T2s = â\97\8a.
+lemma liftv_inv_nil1: â\88\80T2s,l,m. â¬\86[l, m] â\92º â\89¡ T2s â\86\92 T2s = â\92º.
/2 width=5 by liftv_inv_nil1_aux/ qed-.
fact liftv_inv_cons1_aux: ∀T1s,T2s,l,m. ⬆[l, m] T1s ≡ T2s →
- ∀U1,U1s. T1s = U1 @ U1s →
+ ∀U1,U1s. T1s = U1 ⨮ U1s →
∃∃U2,U2s. ⬆[l, m] U1 ≡ U2 & ⬆[l, m] U1s ≡ U2s &
- T2s = U2 @ U2s.
+ T2s = U2 ⨮ U2s.
#T1s #T2s #l #m * -T1s -T2s
[ #U1 #U1s #H destruct
| #T1s #T2s #T1 #T2 #HT12 #HT12s #U1 #U1s #H destruct /2 width=5 by ex3_2_intro/
]
qed-.
-lemma liftv_inv_cons1: ∀U1,U1s,T2s,l,m. ⬆[l, m] U1 @ U1s ≡ T2s →
+lemma liftv_inv_cons1: ∀U1,U1s,T2s,l,m. ⬆[l, m] U1 ⨮ U1s ≡ T2s →
∃∃U2,U2s. ⬆[l, m] U1 ≡ U2 & ⬆[l, m] U1s ≡ U2s &
- T2s = U2 @ U2s.
+ T2s = U2 ⨮ U2s.
/2 width=3 by liftv_inv_cons1_aux/ qed-.
(* Basic properties *********************************************************)