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_2/notation/relations/ringeq_3.ma".
16 include "apps_2/notation/models/at_3.ma".
17 include "apps_2/notation/models/wbrackets_4.ma".
18 include "static_2/syntax/term.ma".
20 (* MODEL ********************************************************************)
22 record model: Type[1] ≝ {
23 dd: Type[0]; (* denotations domain *)
24 sq: relation2 dd dd; (* structural equivalence *)
25 sv: nat → dd; (* sort evaluation *)
26 ap: dd → dd → dd; (* application *)
27 ti: (nat → dd) → (nat → dd) → term → dd (* term interperpretation *)
30 interpretation "structural equivalence (model)"
31 'RingEq M d1 d2 = (sq M d1 d2).
33 interpretation "application (model)"
34 'At M d1 d2 = (ap M d1 d2).
36 interpretation "term interpretation (model)"
37 'WBrackets M gv lv T = (ti M gv lv T).
39 definition evaluation: model → Type[0] ≝ λM. nat → dd M.