openlang

Lean4 сообщает, что 'begin' неизвестен

В редакторе VSCode я ввёл такой код Lean4:

example (a b c : Prop) : ((a ∨ b) → c) ↔ ((a → c) ∧ (b → c)) :=
begin

и получил "unknown identifier 'begin'". Если добавить end тремя строками ниже, появляется "invalid 'end', insufficient scopes". Что я сделал неправильно? Lean установлен некорректно?

Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Запись блоков begin/end относится к синтаксису lean 3. Для входа в режим тактик в Lean 4 используйте ключевое слово by, например:

    example (a b c : Prop) : ((a ∨ b) → c) ↔ ((a → c) ∧ (b → c)) := by sorry

    Аналога end теперь нет, поскольку область определяется отступами, однако необязательный завершающий done выдаёт ошибку, если осталась незакрытая цель.

    Даже при большом опыте с lean 3 я бы посоветовал просмотреть руководство (https://lean-lang.org/lean4/doc/) и/или Theorem Proving in Lean/Functional Programming in Lean (главы 4 и 5 руководства), учитывая значительные изменения и улучшения.

    Ключевое слово end по-прежнему закрывает секции и пространства имён, чем и объясняется диагностика при использовании end здесь.

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Это означает, что Lean 4 установлен успешно, но его синтаксис не полностью совместим с Lean 3.

    В дополнение к ответу hkr о by и необязательном done, тем, кто знаком с Lean 3, может пригодиться Lean 4 survival guide for Lean 3 users (https://github.com/leanprover-community/mathlib4/wiki/Lean-4-survival-guide-for-Lean-3-users), где хорошо описаны основные различия.

    Переведено с английскогоПоказать оригинал

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

  1. Форматирование элементов списка в текст при функциональном программировании

    Я новичок в функциональном программировании и пытаюсь создать функцию, которая принимает список значений (длина которого зара…

    Ответы 2Последняя активность gleam
  2. Какой курс JavaScript стоит пройти?

    В последний раз я заглядывал в документацию JavaScript в 1996 году. Ищу учебный курс по “необходимому JavaScript и веб-концеп…

    Ответы 2Последняя активность elmjavascript
  3. Где найти fmt и пакет main?

    Многие примеры на go начинаются так : Мой GOPATH: Где хранятся main и модуль fmt?

    Ответы 2Последняя активность go