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를 쓰면 그런 진단이 나옵니다.

    영어에서 번역원문 보기

같은 질문의 다른 갈래

  1. 함수형 프로그래밍으로 리스트 원소를 텍스트로 서식화하기

    함수형 프로그래밍을 처음 배우고 있어요. 길이가 정해지지 않은 값의 리스트를 받아서, 각 값을 일정한 형식으로 표현한 내용을 담는 문자열을 만드는 함수를 작성하려고 해요. 의사 코드로 예를 들면 이래요: (제가 쓰는 언어는…

    답글 2최근 활동 gleam
  2. 들어볼 만한 JavaScript 강좌가 있을까요?

    마지막으로 JavaScript 문서를 살펴본 게 1996년이었습니다. Elm과 포트를 자신 있게 쓸 수 있도록 “필수 JavaScript와 웹 개념”을 다루는 교육 강좌를 찾습니다. DOM을 이해하지 못하는 게 Elm 작업에…

    답글 2최근 활동 elmjavascript
  3. fmt와 main 패키지는 어디서 찾나요?

    많은 go 예제가 이렇게 시작합니다 : 제가 쓰는 GOPATH: main과 fmt 모듈은 어디에 저장되나요?

    답글 2최근 활동 go