src/HOL/Library/Pure_term.thy
changeset 23854 688a8a7bcd4e
parent 23063 b4ee6ec4f9c6
child 24994 c385c4eabb3b
equal deleted inserted replaced
23853:2c69bb1374b8 23854:688a8a7bcd4e
     4 *)
     4 *)
     5 
     5 
     6 header {* Embedding (a subset of) the Pure term algebra in HOL *}
     6 header {* Embedding (a subset of) the Pure term algebra in HOL *}
     7 
     7 
     8 theory Pure_term
     8 theory Pure_term
     9 imports MLString
     9 imports ML_String
    10 begin
    10 begin
    11 
    11 
    12 subsection {* Definitions *}
    12 subsection {* Definitions *}
    13 
    13 
    14 types vname = ml_string;
    14 types vname = ml_string;
    45 
    45 
    46 ML {*
    46 ML {*
    47 structure Pure_term =
    47 structure Pure_term =
    48 struct
    48 struct
    49 
    49 
    50 val mk_sort = HOLogic.mk_list @{typ class} o map MLString.mk;
    50 val mk_sort = HOLogic.mk_list @{typ class} o map ML_String.mk;
    51 
    51 
    52 fun mk_typ f (Type (tyco, tys)) =
    52 fun mk_typ f (Type (tyco, tys)) =
    53       @{term Type} $ MLString.mk tyco
    53       @{term Type} $ ML_String.mk tyco
    54         $ HOLogic.mk_list @{typ typ} (map (mk_typ f) tys)
    54         $ HOLogic.mk_list @{typ typ} (map (mk_typ f) tys)
    55   | mk_typ f (TFree v) =
    55   | mk_typ f (TFree v) =
    56       f v;
    56       f v;
    57 
    57 
    58 fun mk_term f g (Const (c, ty)) =
    58 fun mk_term f g (Const (c, ty)) =
    59       @{term Const} $ MLString.mk c $ g ty
    59       @{term Const} $ ML_String.mk c $ g ty
    60   | mk_term f g (t1 $ t2) =
    60   | mk_term f g (t1 $ t2) =
    61       @{term App} $ mk_term f g t1 $ mk_term f g t2
    61       @{term App} $ mk_term f g t1 $ mk_term f g t2
    62   | mk_term f g (Free v) = f v;
    62   | mk_term f g (Free v) = f v;
    63 
    63 
    64 end;
    64 end;