Я пытался доказать эту лемму в Изабель / HOL.
lemma "(0::nat) ≠ undefined"
Но Нитпик находит контрпримеры и к этому, и к его отрицанию
lemma "(0::nat) = undefined"
Как это возможно? Я посмотрел, как определяется undefined, и это аксиома:
axiomatization undefined :: 'a
Но это все еще классическая логика c, верно? Так что либо "(0::nat) = undefined"
, либо "(0::nat) ≠ undefined"
должно быть истинным.
Фон:
У меня есть функция типа:
type_synonym myfun = "nat ⇒ nat"
, и я накладываю ограничения на его изображение и домен в локали. Когда я попытался взять указанную c функцию и показать, что она удовлетворяет всем условиям в локали, у меня возникли проблемы, поскольку некоторые условия выполняются только для значений, которые не определены.
Заранее спасибо :)