Определение коэффициента в Изабель
Я все еще пытаюсь рассуждать о семантическом равенстве в Изабель. Я хочу сравнить две формулы и посмотреть, равны ли они. Мне уже говорили, что мне нужны коэффициенты для этого. Поэтому я попытался определить собственный тип-выражения, но, с другой стороны, мое определение не является полным, так как, кажется, я не смог написать какой-либо код после моего определения. Мой код до сих пор:
theory Scratch
imports Main
begin
no_notation plus (infixl "+" 65)
typedecl basicForm
datatype form_rep = af basicForm
axiomatization
equals :: "form_rep ⇒ form_rep ⇒ bool" (infix "≐" 1) and
plus :: "form_rep ⇒ form_rep ⇒ form_rep" (infixl "+" 35)
where
reflexive: "x ≐ x" and
symmetric: "x ≐ y ⟹ y ≐ x" and
transitiv: "x ≐ y ⟹ y ≐ z ⟹ x ≐ z" and
commut: "x + y ≐ y + x" and
associatPlus: "(x + y) + z ≐ x + (y + z)" and
idemo: "x + x ≐ x"
quotient_type formula = "form_rep" / "equals"
У меня есть некоторая базовая формула и ее сложная версия, и я хочу рассуждать о сложном типе, поэтому я определил равенство с тремя аксиомами для отношений равенства и 3 дополнительными легкими аксиомами.
редактировать: очевидно, я идиот, который забыл добавить кавычки -.- до сих пор не знаю, как продолжить дальше на мысли.
1 ответ
quotient_type
команды требуют доказательства, чтобы быть законченным должным образом. Посмотрите вывод состояния проверки, что необходимо доказать. Такие вещи явно или неявно объясняются в руководстве isar-ref.
Несвязанные заметки:
Лучше избегать повторного использования элементарных обозначений, таких как
+
, Панель символов в Prover IDE предоставляет множество альтернатив.Лучше избегать аксиоматизации свободной формы, особенно для начальных примеров. Просто возьмите то, что Изабель /HOL уже предоставляет, и сделайте определения поверх этого (
datatype
,definition
,inductive
,fun
так далее.)Чехол для верблюдов не используется в Изабель.