199 bounds : interpretation list, |
199 bounds : interpretation list, |
200 wellformed: prop_formula |
200 wellformed: prop_formula |
201 }; |
201 }; |
202 |
202 |
203 |
203 |
204 structure RefuteData = TheoryDataFun |
204 structure RefuteData = Theory_Data |
205 ( |
205 ( |
206 type T = |
206 type T = |
207 {interpreters: (string * (theory -> model -> arguments -> term -> |
207 {interpreters: (string * (theory -> model -> arguments -> term -> |
208 (interpretation * model * arguments) option)) list, |
208 (interpretation * model * arguments) option)) list, |
209 printers: (string * (theory -> model -> typ -> interpretation -> |
209 printers: (string * (theory -> model -> typ -> interpretation -> |
210 (int -> bool) -> term option)) list, |
210 (int -> bool) -> term option)) list, |
211 parameters: string Symtab.table}; |
211 parameters: string Symtab.table}; |
212 val empty = {interpreters = [], printers = [], parameters = Symtab.empty}; |
212 val empty = {interpreters = [], printers = [], parameters = Symtab.empty}; |
213 val copy = I; |
|
214 val extend = I; |
213 val extend = I; |
215 fun merge _ |
214 fun merge |
216 ({interpreters = in1, printers = pr1, parameters = pa1}, |
215 ({interpreters = in1, printers = pr1, parameters = pa1}, |
217 {interpreters = in2, printers = pr2, parameters = pa2}) = |
216 {interpreters = in2, printers = pr2, parameters = pa2}) : T = |
218 {interpreters = AList.merge (op =) (K true) (in1, in2), |
217 {interpreters = AList.merge (op =) (K true) (in1, in2), |
219 printers = AList.merge (op =) (K true) (pr1, pr2), |
218 printers = AList.merge (op =) (K true) (pr1, pr2), |
220 parameters = Symtab.merge (op=) (pa1, pa2)}; |
219 parameters = Symtab.merge (op=) (pa1, pa2)}; |
221 ); |
220 ); |
222 |
221 |