src/HOL/Tools/metis_tools.ML
changeset 28175 6ab2cab48247
parent 27865 27a8ad9612a3
child 28233 f14f34194f63
equal deleted inserted replaced
28174:626f0a79a4b9 28175:6ab2cab48247
   588                 else Output.debug (fn () => "goal is higher-order")
   588                 else Output.debug (fn () => "goal is higher-order")
   589         val _ = Output.debug (fn () => "START METIS PROVE PROCESS")
   589         val _ = Output.debug (fn () => "START METIS PROVE PROCESS")
   590     in
   590     in
   591         case refute thms of
   591         case refute thms of
   592             Metis.Resolution.Contradiction mth =>
   592             Metis.Resolution.Contradiction mth =>
   593               let val _ = Output.debug (fn () => "METIS RECONSTRUCTION START: " ^
   593              (let val _ = Output.debug (fn () => "METIS RECONSTRUCTION START: " ^
   594                             Metis.Thm.toString mth)
   594                             Metis.Thm.toString mth)
   595                   val ctxt' = fold Variable.declare_constraints (map prop_of cls) ctxt
   595                   val ctxt' = fold Variable.declare_constraints (map prop_of cls) ctxt
   596                                (*add constraints arising from converting goal to clause form*)
   596                                (*add constraints arising from converting goal to clause form*)
   597                   val proof = Metis.Proof.proof mth
   597                   val proof = Metis.Proof.proof mth
   598                   val result = translate isFO ctxt' axioms proof
   598                   val result = translate isFO ctxt' axioms proof
   603               in
   603               in
   604                   if null unused then ()
   604                   if null unused then ()
   605                   else warning ("Unused theorems: " ^ commas (map #1 unused));
   605                   else warning ("Unused theorems: " ^ commas (map #1 unused));
   606                   case result of
   606                   case result of
   607                       (_,ith)::_ => (Output.debug (fn () => "success: " ^ Display.string_of_thm ith); ith)
   607                       (_,ith)::_ => (Output.debug (fn () => "success: " ^ Display.string_of_thm ith); ith)
   608                     | _ => error "METIS: no result"
   608                     | _ => error "Metis: no result"
   609               end
   609               end
       
   610               handle e => error "Metis: Exception raised during proof reconstruction")
   610           | Metis.Resolution.Satisfiable _ => error "Metis: No first-order proof with the lemmas supplied"
   611           | Metis.Resolution.Satisfiable _ => error "Metis: No first-order proof with the lemmas supplied"
   611     end;
   612     end;
   612 
   613 
   613   fun metis_general_tac mode ctxt ths i st0 =
   614   fun metis_general_tac mode ctxt ths i st0 =
   614     let val _ = Output.debug (fn () =>
   615     let val _ = Output.debug (fn () =>