| author | nipkow |
| Tue, 23 Jun 1998 18:07:45 +0200 | |
| changeset 5071 | 548f398d770b |
| parent 5006 | cdc86a914e63 |
| permissions | -rw-r--r-- |
| 4082 | 1 |
(* Title: HOL/thy_data.ML |
2 |
ID: $Id$ |
|
3 |
Author: Markus Wenzel, TU Muenchen |
|
4 |
||
| 4876 | 5 |
HOL theory data: datatypes. |
| 4082 | 6 |
*) |
7 |
||
8 |
type datatype_info = |
|
9 |
{case_const: term,
|
|
10 |
case_rewrites: thm list, |
|
11 |
constructors: term list, |
|
12 |
induct_tac: string -> int -> tactic, |
|
13 |
nchotomy: thm, |
|
14 |
exhaustion: thm, |
|
15 |
exhaust_tac: string -> int -> tactic, |
|
16 |
case_cong: thm}; |
|
17 |
||
| 4127 | 18 |
|
| 4082 | 19 |
signature THY_DATA = |
20 |
sig |
|
| 4105 | 21 |
val get_datatypes_sg: Sign.sg -> datatype_info Symtab.table |
22 |
val get_datatypes: theory -> datatype_info Symtab.table |
|
23 |
val put_datatypes: datatype_info Symtab.table -> theory -> theory |
|
| 4876 | 24 |
val setup: (theory -> theory) list |
| 4082 | 25 |
end; |
26 |
||
27 |
structure ThyData: THY_DATA = |
|
28 |
struct |
|
29 |
||
30 |
||
| 5006 | 31 |
(* data kind 'HOL/datatypes' *) |
| 4082 | 32 |
|
| 5006 | 33 |
structure DatatypesArgs = |
34 |
struct |
|
35 |
val name = "HOL/datatypes"; |
|
36 |
type T = datatype_info Symtab.table; |
|
| 4105 | 37 |
|
| 5006 | 38 |
val empty = Symtab.empty; |
39 |
val prep_ext = I; |
|
40 |
val merge: T * T -> T = Symtab.merge (K true); |
|
| 4105 | 41 |
|
| 5006 | 42 |
fun print sg tab = |
| 4259 | 43 |
Pretty.writeln (Pretty.strs ("datatypes:" ::
|
44 |
map (Sign.cond_extern sg Sign.typeK o fst) (Symtab.dest tab))); |
|
| 4127 | 45 |
end; |
46 |
||
| 5006 | 47 |
structure DatatypesData = TheoryDataFun(DatatypesArgs); |
48 |
val get_datatypes_sg = DatatypesData.get_sg; |
|
49 |
val get_datatypes = DatatypesData.get; |
|
50 |
val put_datatypes = DatatypesData.put; |
|
51 |
||
| 4127 | 52 |
|
| 5001 | 53 |
(* setup *) |
|
4120
57c1e7d70960
data kinds 'datatypes', data kinds 'records' added
narasche
parents:
4105
diff
changeset
|
54 |
|
| 5006 | 55 |
val setup = [DatatypesData.init]; |
| 4127 | 56 |
|
| 4082 | 57 |
|
58 |
end; |