I was trying to prove this lemma in Isabelle/HOL.
lemma "(0::nat) ≠ undefined"
But nitpick finds counterexamples to both this and it's negation
lemma "(0::nat) = undefined"
How is this possible? I looked up how undefined is defined and it's an axiom:
axiomatization undefined :: 'a
But it's still classical logic, right? So either "(0::nat) = undefined"
or "(0::nat) ≠ undefined"
should be true.
Background:
I have a function of type:
type_synonym myfun = "nat ⇒ nat"
and I impose constraints on its image and domain in a locale. When I tried to take a specific function and show that it fulfills all conditions in the locale I got problems since some of the conditions only hold for values that are not undefined.
Thank you in advance :)