equal
deleted
inserted
replaced
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; |