1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 include "ground/relocation/pr_tls_eq.ma".
16 include "ground/relocation/pr_pushs.ma".
18 (* ITERATED TAIL FOR PARTIAL RELOCATION MAPS ********************************)
20 (* Inversions with pr_pushs and pr_eq ***************************************)
22 (*** eq_inv_pushs_sn *)
23 lemma pr_eq_inv_pushs_sn (n):
24 ∀f1,g2. ⫯*[n] f1 ≡ g2 →
25 ∧∧ f1 ≡ ⫰*[n]g2 & ⫯*[n]⫰*[n]g2 = g2.
26 #n @(nat_ind_succ … n) -n /2 width=1 by conj/
28 elim (pr_eq_inv_push_sn … H) -H [|*: // ] #Hf10 *
29 elim (IH … Hf10) -IH -Hf10 #Hf12 #H1
30 <pr_tls_succ /2 width=1 by conj/
33 (*** eq_inv_pushs_dx *)
34 lemma pr_eq_inv_pushs_dx (n):
35 ∀f2,g1. g1 ≡ ⫯*[n] f2 →
36 ∧∧ ⫰*[n]g1 ≡ f2 & ⫯*[n]⫰*[n]g1 = g1.
37 #n @(nat_ind_succ … n) -n /2 width=1 by conj/
39 elim (pr_eq_inv_push_dx … H) -H [|*: // ] #Hf02 *
40 elim (IH … Hf02) -IH -Hf02 #Hf12 #H2
41 <pr_tls_succ /2 width=1 by conj/