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_tl_eq.ma".
16 include "ground/relocation/pr_pat_lt.ma".
18 (* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
20 (* Constructions with pr_eq *************************************************)
22 (*** at_eq_repl_back *)
23 corec lemma pr_pat_eq_repl_back (i1) (i2):
24 pr_eq_repl_back (λf. @❨i1,f❩ ≘ i2).
26 [ #f1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12
27 cases (pr_eq_inv_push_sn … H12 … H) -g1 /2 width=2 by pr_pat_refl/
28 | #f1 #i1 #i2 #Hf1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12
29 cases (pr_eq_inv_push_sn … H12 … H) -g1 /3 width=7 by pr_pat_push/
30 | #f1 #i1 #i2 #Hf1 #g1 #j2 #H #H2 #f2 #H12
31 cases (pr_eq_inv_next_sn … H12 … H) -g1 /3 width=5 by pr_pat_next/
35 (*** at_eq_repl_fwd *)
36 lemma pr_pat_eq_repl_fwd (i1) (i2):
37 pr_eq_repl_fwd (λf. @❨i1,f❩ ≘ i2).
38 #i1 #i2 @pr_eq_repl_sym /2 width=3 by pr_pat_eq_repl_back/
41 lemma pr_pat_eq (f): ⫯f ≡ f → ∀i. @❨i,f❩ ≘ i.
43 [ /3 width=3 by pr_pat_eq_repl_back, pr_pat_refl/
44 | /3 width=7 by pr_pat_eq_repl_back, pr_pat_push/
48 (* Inversions with pr_eq ****************************************************)
50 corec lemma pr_pat_inv_eq (f):
51 (∀i. @❨i,f❩ ≘ i) → ⫯f ≡ f.
54 lapply (pr_pat_des_id … H) -H #H
56 @pr_eq_push [3:|*: // ]
57 /3 width=7 by pr_pat_inv_succ_push_succ/