I have a datatype that looks something like this
datatype t =
A
| B
| C t
| D t t
| E t x
| F t x
I want to prove
lemma "f t = g t"
but only for t equal toA to D. This shall be an auxiliary lemma for a bigger proof that involves all the cases for t.
Is there a way to do this in a neat fashion or do I need to write multiple lemmas where t is hardcoded to be A etc.
I don't think this works with a list of lemmas, since t appears recursively.
Depending on the situation, I might either introduce a new, restricted datatype or add a predicate that only allows A to D as an assumption.
Last updated: Nov 13 2025 at 04:27 UTC