equal
deleted
inserted
replaced
1 (* Title: HOL/typedef.ML |
1 (* Title: HOL/typedef.ML |
2 ID: $Id$ |
2 ID: $Id$ |
3 Author: Markus Wenzel, TU Muenchen |
3 Author: Markus Wenzel, TU Muenchen |
4 |
4 |
5 Internal interface for typedef definitions. |
5 Internal interface for typedefs. |
6 *) |
6 *) |
7 |
7 |
8 signature TYPEDEF = |
8 signature TYPEDEF = |
9 sig |
9 sig |
10 val prove_nonempty: cterm -> thm list -> tactic option -> thm |
10 val prove_nonempty: cterm -> thm list -> tactic option -> thm |
43 |
43 |
44 (* ext_typedef *) |
44 (* ext_typedef *) |
45 |
45 |
46 fun ext_typedef prep_term name (t, vs, mx) raw_set axms thms usr_tac thy = |
46 fun ext_typedef prep_term name (t, vs, mx) raw_set axms thms usr_tac thy = |
47 let |
47 let |
48 val dummy = require_thy thy "Set" "typedef definitions"; |
48 val dummy = require_thy thy "Set" "typedefs"; |
49 val sign = sign_of thy; |
49 val sign = sign_of thy; |
50 |
50 |
51 (*rhs*) |
51 (*rhs*) |
52 val cset = prep_term sign raw_set; |
52 val cset = prep_term sign raw_set; |
53 val {T = setT, t = set, ...} = rep_cterm cset; |
53 val {T = setT, t = set, ...} = rep_cterm cset; |
120 [(Rep_name, rep_type), |
120 [(Rep_name, rep_type), |
121 (Rep_name ^ "_inverse", rep_type_inv), |
121 (Rep_name ^ "_inverse", rep_type_inv), |
122 (Abs_name ^ "_inverse", abs_type_inv)] |
122 (Abs_name ^ "_inverse", abs_type_inv)] |
123 end |
123 end |
124 handle ERROR => |
124 handle ERROR => |
125 error ("The error(s) above occurred in typedef definition " ^ quote name); |
125 error ("The error(s) above occurred in typedef " ^ quote name); |
126 |
126 |
127 |
127 |
128 (* external interfaces *) |
128 (* external interfaces *) |
129 |
129 |
130 fun cert_term sg tm = |
130 fun cert_term sg tm = |
136 val add_typedef = ext_typedef read_term; |
136 val add_typedef = ext_typedef read_term; |
137 val add_typedef_i = ext_typedef cert_term; |
137 val add_typedef_i = ext_typedef cert_term; |
138 |
138 |
139 |
139 |
140 end; |
140 end; |
141 |
|