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 |