equal
deleted
inserted
replaced
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 () => |