482
|
1 |
(* Title: ZF/IMP/Aexp.ML
|
|
2 |
ID: $Id$
|
|
3 |
Author: Heiko Loetzbeyer & Robert Sandner, TUM
|
|
4 |
Copyright 1994 TUM
|
|
5 |
*)
|
|
6 |
|
|
7 |
structure Aexp = Datatype_Fun
|
|
8 |
(
|
|
9 |
val thy = Univ.thy |> add_consts [("loc", "i", NoSyn)]
|
|
10 |
val thy_name = "Aexp"
|
|
11 |
val rec_specs =
|
|
12 |
[(
|
|
13 |
"aexp", "univ(loc Un (nat->nat) Un ((nat*nat) -> nat) )",
|
|
14 |
[
|
|
15 |
(["N","X"], "i => i", NoSyn),
|
|
16 |
(["Op1"], "[i,i] => i", NoSyn),
|
|
17 |
(["Op2"], "[i,i,i] => i", NoSyn)
|
|
18 |
]
|
|
19 |
)];
|
|
20 |
|
|
21 |
val rec_styp = "i";
|
|
22 |
val ext = None;
|
|
23 |
|
|
24 |
val sintrs =
|
|
25 |
[
|
|
26 |
"n:nat ==> N(n) : aexp",
|
|
27 |
"x:loc ==> X(x) : aexp",
|
|
28 |
"[| f: nat -> nat; a : aexp |] ==> Op1(f,a) : aexp",
|
|
29 |
"[| f: (nat * nat) -> nat; a0 : aexp; a1: aexp |] \
|
|
30 |
\ ==> Op2(f,a0,a1) : aexp"
|
|
31 |
];
|
|
32 |
val monos = [];
|
|
33 |
val type_intrs = datatype_intrs;
|
|
34 |
val type_elims = datatype_elims;
|
|
35 |
);
|