#coq
#coq
Вопрос:
Я следую этому руководству: https://softwarefoundations.cis.upenn.edu/lf-current/Basics.html
Раздел «Доказательство путем перезаписи»:
Код
Theorem plus_id_example : forall n m : nat,
n = m =>
n n = m m.
Выдает ошибку :
Синтаксическая ошибка: ‘.’ ожидается после [vernac:gallina] (в [vernac_aux]).
Я не понимаю, что я делаю не так?
Кроме того, где лучше всего получить документацию? Я имею в виду документацию, удобную для начинающих.
Комментарии:
1. Вам нужно заменить
=>
на->
.2. Большое вам спасибо, это сработало
Ответ №1:
Чтобы использовать текст так, как он написан на странице, на которую вы ссылаетесь, вам необходимо импортировать некоторые обозначения. В частности, ∀
и →
не существуют по умолчанию. Для импорта этих обозначений используйте Require Import Utf8.
Require Import Utf8.
Theorem plus_id_example : ∀n m:nat,
n = m →
n n = m m.
Эквивалентами этих обозначений в формате ASCII являются forall
for ∀
(как вы поняли) и ->
for →
. Если у вас есть импортированные обозначения, вы можете увидеть, что они означают при использовании Locate
. Locate "→".
будет иметь вывод
Notation
"x → y" := forall _ : x, y : type_scope
(default interpretation)
Конечно, это ничего нам не дает, ->
поскольку ->
само по себе является обозначением для того же самого. Coq отобразит это обозначение по умолчанию, поэтому, если вы введете
Theorem plus_id_example : forall n m : nat,
forall _ : n = m,
n n = m m.
(без Utf8
импорта) вывод является
1 subgoal
______________________________________(1/1)
forall n m : nat, n = m -> n n = m m
в котором используется ->
обозначение.
Комментарии:
1. Большое вам спасибо за это объяснение