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/notation/relations/ringeq_3.ma".
16 include "apps_2/notation/models/at_3.ma".
17 include "apps_2/notation/models/oplus_4.ma".
18 include "apps_2/notation/models/wbrackets_4.ma".
19 include "static_2/syntax/term.ma".
21 (* MODEL ********************************************************************)
23 record model: Type[1] ≝ {
24 (* Note: denotations domain *)
26 (* Note: structural equivalence *)
28 (* Note: sort evaluation *)
30 (* Note: conjunction *)
31 co: bool → dd → dd → dd;
32 (* Note: application *)
34 (* Note: term interperpretation *)
35 ti: (nat → dd) → (nat → dd) → term → dd
38 interpretation "structural equivalence (model)"
39 'RingEq M d1 d2 = (sq M d1 d2).
41 interpretation "application (model)"
42 'At M d1 d2 = (ap M d1 d2).
44 interpretation "conjunction (model)"
45 'OPlus M p d1 d2 = (co M p d1 d2).
47 interpretation "term interpretation (model)"
48 'WBrackets M gv lv T = (ti M gv lv T).
50 definition evaluation: model → Type[0] ≝ λM. nat → dd M.