]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_lift.ma
lift functions and identity map
[helm.git] / matita / matita / contribs / lambdadelta / ground_2 / relocation / nstream_lift.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 include "ground_2/notation/functions/lift_1.ma".
16 include "ground_2/relocation/nstream_at.ma".
17
18 (* RELOCATION N-STREAM ******************************************************)
19
20 definition push: nstream → nstream ≝ λt. 0@t.
21
22 interpretation "push (nstream)" 'Lift t = (push t).
23
24 definition next: nstream → nstream.
25 * #a #t @(⫯a@t)
26 qed.
27
28 interpretation "next (nstream)" 'Successor t = (next t).
29
30 (* Basic properties on push *************************************************)
31
32 lemma push_at_O: ∀t. @⦃0, ↑t⦄ ≡ 0.
33 // qed.
34
35 lemma push_at_S: ∀t,i1,i2. @⦃i1, t⦄ ≡ i2 → @⦃⫯i1, ↑t⦄ ≡ ⫯i2.
36 /2 width=1 by at_S1/ qed.
37
38 (* Basic inversion lemmas on push *******************************************)
39
40 lemma push_inv_at_S: ∀t,i1,i2. @⦃⫯i1, ↑t⦄ ≡ ⫯i2 → @⦃i1, t⦄ ≡ i2.
41 /2 width=1 by at_inv_SOS/ qed-.
42
43 lemma injective_push: injective ? ? push.
44 #t1 #t2 normalize #H destruct //
45 qed-.
46
47 (* Basic properties on next *************************************************)
48
49 lemma next_at: ∀t,i1,i2. @⦃i1, t⦄ ≡ i2 → @⦃i1, ⫯t⦄ ≡ ⫯i2.
50 * /2 width=1 by at_lift/
51 qed.
52
53 (* Basic inversion lemmas on next *******************************************)
54
55 lemma next_inv_at: ∀t,i1,i2. @⦃i1, ⫯t⦄ ≡ ⫯i2 → @⦃i1, t⦄ ≡ i2.
56 * /2 width=1 by at_inv_xSS/
57 qed-.
58
59 lemma injective_next: injective ? ? next.
60 * #a1 #t1 * #a2 #t2 normalize #H destruct //
61 qed-.