Hi. I'd like to modify the claset so that safe
and clarsimp
do _not_ do the following
lemma
‹¬(A ⊆ B) ⟹ C›
apply safe_step
(* proof (prove)
goal (1 subgoal):
1. ⋀x. ¬ C ⟹ x ∈ A ⟹ x ∈ B *)
However, I'm struggling with identifying the lemma/code that triggers this transformation. Can someone help?
It applies something like subsetI
.
It seems to apply contraposition and then subsetI
. It is not clear why it applies contraposition though...
It would be enough to know how to disable it :-)
To remove a rule (intro/dest/elim...) from the claset you can use the rule del
attribute, for example with declare subsetI[rule del]
. See also section 9.4.2 of the isar-ref.
After that the safe_step
does nothing on your example goal.
Thank you. I should have clarified that removing subsetI
goes too far in my case -- I only want to avoid it in conjunction with contraposition.
I tried disabling all contraposition theorems that I found using find_theorems
but to no avail. Maybe contraposition is baked into safe_step
?
Last updated: Dec 21 2024 at 12:33 UTC