equal
deleted
inserted
replaced
793 val type_has_top_sort = |
793 val type_has_top_sort = |
794 exists_subtype (fn TFree (_, []) => true | TVar (_, []) => true | _ => false) |
794 exists_subtype (fn TFree (_, []) => true | TVar (_, []) => true | _ => false) |
795 |
795 |
796 fun generic_metis_tac mode ctxt ths i st0 = |
796 fun generic_metis_tac mode ctxt ths i st0 = |
797 let |
797 let |
|
798 val thy = ProofContext.theory_of ctxt |
798 val _ = trace_msg (fn () => |
799 val _ = trace_msg (fn () => |
799 "Metis called with theorems " ^ cat_lines (map (Display.string_of_thm ctxt) ths)) |
800 "Metis called with theorems " ^ cat_lines (map (Display.string_of_thm ctxt) ths)) |
800 in |
801 in |
801 if exists_type type_has_top_sort (prop_of st0) then |
802 if exists_type type_has_top_sort (prop_of st0) then |
802 (warning ("Metis: Proof state contains the universal sort {}"); Seq.empty) |
803 (warning ("Metis: Proof state contains the universal sort {}"); Seq.empty) |
803 else |
804 else |
804 Meson.MESON (maps neg_clausify) |
805 Meson.MESON (K all_tac) (* FIXME: Try (cnf.cnfx_rewrite_tac ctxt) *) |
|
806 (maps neg_clausify) |
805 (fn cls => resolve_tac (FOL_SOLVE mode ctxt cls ths) 1) |
807 (fn cls => resolve_tac (FOL_SOLVE mode ctxt cls ths) 1) |
806 ctxt i st0 |
808 ctxt i st0 |
807 end |
809 end |
808 |
810 |
809 val metis_tac = generic_metis_tac HO |
811 val metis_tac = generic_metis_tac HO |