184 bounds : interpretation list, |
184 bounds : interpretation list, |
185 wellformed: prop_formula |
185 wellformed: prop_formula |
186 }; |
186 }; |
187 |
187 |
188 |
188 |
189 structure RefuteDataArgs = |
189 structure RefuteData = TheoryDataFun |
190 struct |
190 ( |
191 val name = "HOL/refute"; |
|
192 type T = |
191 type T = |
193 {interpreters: (string * (theory -> model -> arguments -> Term.term -> |
192 {interpreters: (string * (theory -> model -> arguments -> Term.term -> |
194 (interpretation * model * arguments) option)) list, |
193 (interpretation * model * arguments) option)) list, |
195 printers: (string * (theory -> model -> Term.term -> interpretation -> |
194 printers: (string * (theory -> model -> Term.term -> interpretation -> |
196 (int -> bool) -> Term.term option)) list, |
195 (int -> bool) -> Term.term option)) list, |
202 ({interpreters = in1, printers = pr1, parameters = pa1}, |
201 ({interpreters = in1, printers = pr1, parameters = pa1}, |
203 {interpreters = in2, printers = pr2, parameters = pa2}) = |
202 {interpreters = in2, printers = pr2, parameters = pa2}) = |
204 {interpreters = AList.merge (op =) (K true) (in1, in2), |
203 {interpreters = AList.merge (op =) (K true) (in1, in2), |
205 printers = AList.merge (op =) (K true) (pr1, pr2), |
204 printers = AList.merge (op =) (K true) (pr1, pr2), |
206 parameters = Symtab.merge (op=) (pa1, pa2)}; |
205 parameters = Symtab.merge (op=) (pa1, pa2)}; |
207 fun print sg {interpreters, printers, parameters} = |
206 ); |
208 Pretty.writeln (Pretty.chunks |
|
209 [Pretty.strs ("default parameters:" :: List.concat (map |
|
210 (fn (name, value) => [name, "=", value]) (Symtab.dest parameters))), |
|
211 Pretty.strs ("interpreters:" :: map fst interpreters), |
|
212 Pretty.strs ("printers:" :: map fst printers)]); |
|
213 end; |
|
214 |
|
215 structure RefuteData = TheoryDataFun(RefuteDataArgs); |
|
216 |
207 |
217 |
208 |
218 (* ------------------------------------------------------------------------- *) |
209 (* ------------------------------------------------------------------------- *) |
219 (* interpret: interprets the term 't' using a suitable interpreter; returns *) |
210 (* interpret: interprets the term 't' using a suitable interpreter; returns *) |
220 (* the interpretation and a (possibly extended) model that keeps *) |
211 (* the interpretation and a (possibly extended) model that keeps *) |
3208 (* ------------------------------------------------------------------------- *) |
3199 (* ------------------------------------------------------------------------- *) |
3209 |
3200 |
3210 (* (theory -> theory) list *) |
3201 (* (theory -> theory) list *) |
3211 |
3202 |
3212 val setup = |
3203 val setup = |
3213 RefuteData.init #> |
|
3214 add_interpreter "stlc" stlc_interpreter #> |
3204 add_interpreter "stlc" stlc_interpreter #> |
3215 add_interpreter "Pure" Pure_interpreter #> |
3205 add_interpreter "Pure" Pure_interpreter #> |
3216 add_interpreter "HOLogic" HOLogic_interpreter #> |
3206 add_interpreter "HOLogic" HOLogic_interpreter #> |
3217 add_interpreter "set" set_interpreter #> |
3207 add_interpreter "set" set_interpreter #> |
3218 add_interpreter "IDT" IDT_interpreter #> |
3208 add_interpreter "IDT" IDT_interpreter #> |