src/HOL/typedef.ML
changeset 2851 b6a5780e36b9
parent 2238 c72a23bbe762
child 2928 c0e3f1ceabf2
equal deleted inserted replaced
2850:a66196e1668c 2851:b6a5780e36b9
     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