@@ -126,12 +126,6 @@ fun condition_to_filter_out_conjecture (parent_or(*parent_or*):term) (refutation
126126 not (SFTD.run_assertion pst parent_or SFTD.has_func_with_three_occs_in_a_row)
127127 andalso
128128 SFTD.run_assertion pst conjecture SFTD.has_func_with_three_occs_in_a_row;
129- fun has_counter_example_in_prems (pst:Proof.state) (term:term) =
130- let
131- val prems = Logic.strip_imp_prems term: terms;
132- in
133- SS.any_of_these_is_refuted refutation pst prems: bool
134- end ;
135129 fun get_concl (term:term) = try (snd o Logic.dest_implies) term
136130 <$> Top_Down_Util.standardize_vnames
137131 <$> Isabelle_Utils.strip_atyp
@@ -140,12 +134,19 @@ fun condition_to_filter_out_conjecture (parent_or(*parent_or*):term) (refutation
140134 val concl_of_meta_imp_in_conjec = get_concl conjecture: term option;
141135 fun concls_are_same _ = Utils.mk_option_pair (concl_of_meta_imp_in_parent, concl_of_meta_imp_in_conjec)
142136 <$> (op =) |> Utils.is_some_true;
137+ fun concl_of_conj_refuted_even_cncl_of_parent_is_not _ =
138+ if is_none concl_of_meta_imp_in_parent orelse is_none concl_of_meta_imp_in_conjec
139+ then false
140+ else if SS.is_refuted refutation pst (the concl_of_meta_imp_in_parent)
141+ then false
142+ else SS.is_refuted refutation pst (the concl_of_meta_imp_in_conjec);
143143 in
144144 too_large () orelse
145145 eq_to_final_goal () andalso from_tactic orelse
146146 concl_is_eq_to_final_goal () (* andalso seed_is_from_tactic seed*) orelse
147147 has_func_with_three_occs_in_a_row_even_though_the_parent_does_not_have_those () orelse
148- concls_are_same ()
148+ concls_are_same () orelse
149+ concl_of_conj_refuted_even_cncl_of_parent_is_not ()
149150(*
150151 (* not from_tactic andalso not orig_prem_is_refuted andalso*) has_counter_example_in_prems pst conjecture(* TODO: This is BAD. We should also check if the conclusions are the same in the parent-node and the conjecture.*)
151152*)
0 commit comments