src/Provers/classical.ML
changeset 4259 adbe3f4e7caf
parent 4124 1af16493c57f
child 4271 3a82492e70c5
equal deleted inserted replaced
4258:f2ca5a87f0a7 4259:adbe3f4e7caf
    26 signature CLASET_THY_DATA =
    26 signature CLASET_THY_DATA =
    27 sig
    27 sig
    28   val clasetK: string
    28   val clasetK: string
    29   exception ClasetData of object ref
    29   exception ClasetData of object ref
    30   val thy_data: string * (object * (object -> object) *
    30   val thy_data: string * (object * (object -> object) *
    31     (object * object -> object) * (object -> unit))
    31     (object * object -> object) * (Sign.sg -> object -> unit))
    32   val fix_methods: object * (object -> object) *
    32   val fix_methods: object * (object -> object) *
    33     (object * object -> object) * (object -> unit) -> unit
    33     (object * object -> object) * (Sign.sg -> object -> unit) -> unit
    34 end;
    34 end;
    35 
    35 
    36 signature CLASSICAL_DATA =
    36 signature CLASSICAL_DATA =
    37 sig
    37 sig
    38   val mp	: thm    	(* [| P-->Q;  P |] ==> Q *)
    38   val mp	: thm    	(* [| P-->Q;  P |] ==> Q *)
   145   fun undef _ = raise Match;
   145   fun undef _ = raise Match;
   146 
   146 
   147   val empty_ref = ref ERROR;
   147   val empty_ref = ref ERROR;
   148   val prep_ext_fn = ref (undef: object -> object);
   148   val prep_ext_fn = ref (undef: object -> object);
   149   val merge_fn = ref (undef: object * object -> object);
   149   val merge_fn = ref (undef: object * object -> object);
   150   val print_fn = ref (undef: object -> unit);
   150   val print_fn = ref (undef: Sign.sg -> object -> unit);
   151 
   151 
   152   val empty = ClasetData empty_ref;
   152   val empty = ClasetData empty_ref;
   153   fun prep_ext exn = ! prep_ext_fn exn;
   153   fun prep_ext exn = ! prep_ext_fn exn;
   154   fun merge exn = ! merge_fn exn;
   154   fun merge exn = ! merge_fn exn;
   155   fun print exn = ! print_fn exn;
   155   fun print sg exn = ! print_fn sg exn;
   156 in
   156 in
   157   val thy_data = (clasetK, (empty, prep_ext, merge, print));
   157   val thy_data = (clasetK, (empty, prep_ext, merge, print));
   158   fun fix_methods (e, ext, mrg, prt) =
   158   fun fix_methods (e, ext, mrg, prt) =
   159     (empty_ref := e; prep_ext_fn := ext; merge_fn := mrg; print_fn := prt);
   159     (empty_ref := e; prep_ext_fn := ext; merge_fn := mrg; print_fn := prt);
   160 end;
   160 end;
   726     ClasetData (ref (CSData (ref cs)));
   726     ClasetData (ref (CSData (ref cs)));
   727 
   727 
   728   fun merge (ClasetData (ref (CSData (ref cs1))), ClasetData (ref (CSData (ref cs2)))) =
   728   fun merge (ClasetData (ref (CSData (ref cs1))), ClasetData (ref (CSData (ref cs2)))) =
   729     ClasetData (ref (CSData (ref (merge_cs (cs1, cs2)))));
   729     ClasetData (ref (CSData (ref (merge_cs (cs1, cs2)))));
   730 
   730 
   731   fun print (ClasetData (ref (CSData (ref cs)))) = print_cs cs;
   731   fun print (_: Sign.sg) (ClasetData (ref (CSData (ref cs)))) = print_cs cs;
   732 in
   732 in
   733   val _ = fix_methods (empty, prep_ext, merge, print);
   733   val _ = fix_methods (empty, prep_ext, merge, print);
   734 end;
   734 end;
   735 
   735 
   736 
   736