Is there already some term equality relation defined in Isabelle? What is the broadest set of terms on which it is defined?
Just to be clear, I'm looking for a relation a ~ b that returns True iff a is b in the sense that they look exactly the same written down: no properties of a and b should need to be known to evaluate a ~ b.
No such thing exists. There's no notion of syntactic equality in the logic, because it admits definitions (x ≡ T
) and substitution (x ≡ y ⇒ P x ≡ P y
).
What you could do instead is use ML's equality operator on terms. But for that, you have to use ML
blocks.