Определение коэффициента в Изабель

Я все еще пытаюсь рассуждать о семантическом равенстве в Изабель. Я хочу сравнить две формулы и посмотреть, равны ли они. Мне уже говорили, что мне нужны коэффициенты для этого. Поэтому я попытался определить собственный тип-выражения, но, с другой стороны, мое определение не является полным, так как, кажется, я не смог написать какой-либо код после моего определения. Мой код до сих пор:

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 так далее.)

  • Чехол для верблюдов не используется в Изабель.

Другие вопросы по тегам