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