src/HOL/MiniML/MiniML.thy
changeset 1300 c7a8f374339b
child 1376 92f83b9d17e1
equal deleted inserted replaced
1299:e74f694ca1da 1300:c7a8f374339b
       
     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