src/HOL/Tools/SMT/smt_solver.ML
changeset 40198 8d470bbaafd7
parent 40197 d99f74ed95be
child 40199 2963511e121c
equal deleted inserted replaced
40197:d99f74ed95be 40198:8d470bbaafd7
   226     val _ = trace_msg ctxt (pretty "SMT result:") ls
   226     val _ = trace_msg ctxt (pretty "SMT result:") ls
   227   in ls end
   227   in ls end
   228 
   228 
   229 end
   229 end
   230 
   230 
       
   231 fun trace_assms ctxt = trace_msg ctxt (Pretty.string_of o
       
   232   Pretty.big_list "SMT assertions:" o map (Display.pretty_thm ctxt o snd))
       
   233 
   231 fun trace_recon_data ctxt ({typs, terms, ...} : SMT_Translate.recon) =
   234 fun trace_recon_data ctxt ({typs, terms, ...} : SMT_Translate.recon) =
   232   let
   235   let
   233     fun pretty_eq n p = Pretty.block [Pretty.str n, Pretty.str " = ", p]
   236     fun pretty_eq n p = Pretty.block [Pretty.str n, Pretty.str " = ", p]
   234     fun pretty_typ (n, T) = pretty_eq n (Syntax.pretty_typ ctxt T)
   237     fun pretty_typ (n, T) = pretty_eq n (Syntax.pretty_typ ctxt T)
   235     fun pretty_term (n, t) = pretty_eq n (Syntax.pretty_term ctxt t)
   238     fun pretty_term (n, t) = pretty_eq n (Syntax.pretty_term ctxt t)
   245     val comments = ("solver: " ^ name) ::
   248     val comments = ("solver: " ^ name) ::
   246       ("timeout: " ^ string_of_int (Config.get ctxt timeout)) ::
   249       ("timeout: " ^ string_of_int (Config.get ctxt timeout)) ::
   247       "arguments:" :: args
   250       "arguments:" :: args
   248   in
   251   in
   249     irules
   252     irules
       
   253     |> tap (trace_assms ctxt)
   250     |> SMT_Translate.translate translate_config ctxt comments
   254     |> SMT_Translate.translate translate_config ctxt comments
   251     ||> tap (trace_recon_data ctxt)
   255     ||> tap (trace_recon_data ctxt)
   252     |>> run_solver ctxt cmd args
   256     |>> run_solver ctxt cmd args
   253     |> rpair ctxt
   257     |> rpair ctxt
   254   end
   258   end