src/HOL/Tools/Sledgehammer/metis_tactics.ML
changeset 39037 5146d640aa4a
parent 38994 7c655a491bce
child 39038 dfea12cc5f5a
equal deleted inserted replaced
39036:dff91b90d74c 39037:5146d640aa4a
   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