]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_2/etc_2A1/hod/ntas.etc
update in basic_2 and static_2
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / etc_2A1 / hod / ntas.etc
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 notation "hvbox( ⦃ h , break L ⦄ ⊢ break term 46 T1 : : * break term 46 T2 )"
16    non associative with precedence 45
17    for @{ 'NativeTypeStarAlt $h $L $T1 $T2 }.
18
19 include "basic_2/dynamic/nta.ma".
20
21 (* HIGHER ORDER NATIVE TYPE ASSIGNMENT ON TERMS *****************************)
22
23 definition ntas: sh → lenv → relation term ≝
24                  λh,L. star … (nta h L).
25
26 interpretation "higher order native type assignment (term)"
27    'NativeTypeStar h L T U = (ntas h L T U).
28
29 (* Basic eliminators ********************************************************)
30 (*
31 lemma cprs_ind: ∀L,T1. ∀R:predicate term. R T1 →
32                 (∀T,T2. L ⊢ T1 ➡* T → L ⊢ T ➡ T2 → R T → R T2) →
33                 ∀T2. L ⊢ T1 ➡* T2 → R T2.
34 #L #T1 #R #HT1 #IHT1 #T2 #HT12
35 @(TC_star_ind … HT1 IHT1 … HT12) //
36 qed-.
37 *)
38 axiom ntas_ind_dx: ∀h,L,T2. ∀R:predicate term. R T2 →
39                    (∀T1,T. ⦃h, L⦄ ⊢ T1 : T → ⦃h, L⦄ ⊢ T :* T2 → R T → R T1) →
40                    ∀T1. ⦃h, L⦄ ⊢ T1 :* T2 → R T1.
41 (*
42 #h #L #T2 #R #HT2 #IHT2 #T1 #HT12
43 @(star_ind_dx … HT2 IHT2 … HT12) //
44 qed-.
45 *)
46 (* Basic properties *********************************************************)
47
48 lemma ntas_refl: ∀h,L,T. ⦃h, L⦄ ⊢ T :* T.
49 // qed.
50
51 lemma ntas_strap1: ∀h,L,T1,T,T2.
52                    ⦃h, L⦄ ⊢ T1 :* T → ⦃h, L⦄  ⊢ T : T2 → ⦃h, L⦄  ⊢ T1 :* T2.
53 /2 width=3/ qed.
54
55 lemma ntas_strap2: ∀h,L,T1,T,T2.
56                    ⦃h, L⦄  ⊢ T1 : T → ⦃h, L⦄ ⊢ T :* T2 → ⦃h, L⦄ ⊢ T1 :* T2.
57 /2 width=3/ qed.