equal
deleted
inserted
replaced
|
1 (* Title: HOL/MiniML/MiniML.thy |
|
2 ID: $Id$ |
|
3 Author: Dieter Nazareth and Tobias Nipkow |
|
4 Copyright 1995 TU Muenchen |
|
5 |
|
6 Mini_ML with type inference rules. |
|
7 *) |
|
8 |
|
9 MiniML = Type + |
|
10 |
|
11 (* expressions *) |
|
12 datatype |
|
13 expr = Var nat | Abs expr | App expr expr |
|
14 |
|
15 (* type inference rules *) |
|
16 consts |
|
17 has_type :: "(type_expr list * expr * type_expr)set" |
|
18 syntax |
|
19 "@has_type" :: "[type_expr list, expr, type_expr] => bool" |
|
20 ("((_) |-/ (_) :: (_))" 60) |
|
21 translations |
|
22 "a |- e :: t" == "(a,e,t):has_type" |
|
23 |
|
24 inductive "has_type" |
|
25 intrs |
|
26 VarI "[| n < length a |] ==> a |- Var n :: nth n a" |
|
27 AbsI "[| t1#a |- e :: t2 |] ==> a |- Abs e :: Fun t1 t2" |
|
28 AppI "[| a |- e1 :: Fun t2 t1; a |- e2 :: t2 |] |
|
29 ==> a |- App e1 e2 :: t1" |
|
30 |
|
31 end |
|
32 |