I want to construct a thm using a natural deduction proof. The theorem involves conjE
which means that I use Thm.assume
to construct thms with open assumptions that are closed when using conjE
. Unfortunately, this apparently violates Isabelle conventions (see https://mailmanbroy.informatik.tu-muenchen.de/pipermail/isabelle-dev/2016-August/015534.html), because I get an undeclared hyps
when writing done
after resolving with the theorem. From the mailing list thread alone, I don't really see what I should do instead. Does anybody know what the canonical way is to construct such a proof?
Can you elaborate? It's unclear to me what setting you're in. ML? HOL?
Or post a link to the theory?
I am constructing the theorem with ML. I will try to come up with a minimal example
Hm, it is not that easy to condense what I have. In the meantime, I tried to use Thm.assume_hyps
instead of Thm.assume
but no luck.
It appears to be that I was using Thm.assume
incorrectly (I did not close some assumptions).
Thm.assume
is a pretty low-level tool. You have to be careful to actually add these to the assumptions eventually using Thm.implies_intr
. I think the more modern approach (that I don't know much about) is using contexts that have these as local assumptions. (In Isar you would write context assumes … begin
)
When you do Thm.assume ct
, you get ct
as a theorem, but with the pending hypothesis ct
. All other theorems you create based on this one will also have ct
as a hypothesis. It is only discharged when you do Thm.implies_intr
eventually.
Yeah, I know that. But I really need a natural deduction proof in my case since I am replaying proof terms that some ML code generates.
Or at least I believe that I need that :P
Last updated: Dec 21 2024 at 12:33 UTC