src/HOL/Tools/refute.ML
changeset 22846 fb79144af9a3
parent 22580 d91b4dd651d6
child 22997 d4f3b015b50b
equal deleted inserted replaced
22845:5f9138bcb3d7 22846:fb79144af9a3
   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 #>