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 "basic_2/rt_equivalence/cpcs.ma".
16 include "apps_2/functional/mf.ma".
17 include "apps_2/models/model.ma".
19 (* TERM MODEL ***************************************************************)
21 definition tm_dd ≝ term.
23 definition tm_sq (h) (T1) (T2) ≝ ❨⋆,⋆❩ ⊢ T1 ⬌*[h] T2.
25 definition tm_sv (s) ≝ ⋆s.
27 definition tm_co (p) (V) (T) ≝ ⓓ[p]V.(↑[1]T).
29 definition tm_ap (V) (T) ≝ ⓐV.T.
31 definition tm_ti (gv) (lv) (T) ≝ ■[gv,lv]T.
33 definition TM (h): model ≝ mk_model … .
35 | @(tm_sq h) |7,8: skip
43 (* Basic properties *********************************************************)
45 lemma tm_co_rw (h) (p) (V) (T): V⊕{TM h}[p]T = ⓓ[p]V.(↑[1]T).
48 lemma tm_ti_sort (h) (gv) (lv): ∀s. ⟦⋆s⟧{TM h}[gv,lv] = sv … s.
51 lemma tm_ti_lref (h): ∀gv,lv,i. ⟦#i⟧{TM h}[gv,lv] = lv i.
54 lemma tm_ti_gref (h): ∀gv,lv,l. ⟦§l⟧{TM h}[gv,lv] = gv l.
57 lemma tm_ti_bind (h) (p) (I): ∀gv,lv,V,T.
58 ⟦ⓑ[p,I]V.T⟧{TM h}[gv,lv] = ⓑ[p,I]⟦V⟧[gv,lv].⟦T⟧{TM h}[⇡[0]gv,⇡[0←#0]lv].