Leanのシーケントは、ゴール=リクエストとして出てくるが、その形式は
- コンテキスト ⊢ ターゲット
コンテキストは型宣言のカンマ区切り列、ターゲットは型式〈かたしき〉。その意味はリクエストだから、
- コンテキスト ⊢? _:ターゲット
例:
- p q : Prop, hp : p, hq : q ⊢ p ∧ q ∧ p
p q : Prop は、p : Prop, q : Prop の省略記法。コンテキストのなかで、型データの型宣言(単数または複数)をセットアップ〈setup{s}?〉、証明データ〈証明オブジェクト〉の型宣言を仮説〈hypothesis, hypotheses(複数)〉と呼ぶ。
Leanのタクティクは逆行〈backward〉でしか使えないが、概念的には順行〈forward〉タクティク('↓'を付ける)もある。
p q : Prop, hp : p, hq : q ⊢! p p q : Prop, hp : p, hq : q ⊢! q ∧ p ------------------------------------------- ↓apply and.intro p q : Prop, hp : p, hq : q ⊢! p ∧ q ∧ p
このapplyは、復圏(または多圏)における復結合で、復射のリストに単一の復射を結合する。用語法は apply より compose が相応しいが歴史的にしょうがない。クローン=デカルト復圏(または多クローン=デカルト多圏)の計算が背後にある。
逆行タクティクには'↑'を付ける。
p q : Prop, hp : p, hq : q ⊢? p ∧ q ∧ p ------------------------------------------- ↑apply and.intro p q : Prop, hp : p, hq : q ⊢? p p q : Prop, hp : p, hq : q ⊢? q ∧ p
同様に、
☆(empty) ----------------------------------- ↓exact hp p q : Prop, hp : p, hq : q ⊢! p
同様に、
p q : Prop, hp : p, hq : q ⊢? p ----------------------------------- ↑exact hp ☆(closed)
「declarative style VS procedural style」=「forward term style VS backward tactic style」になっている。実際は、次の四区分。
term | tactic | |
---|---|---|
backward | backward term style | backward tactic style |
forward | forward term style | forward tactic style |
forward tactic style がないので、シーケント計算との連絡が悪い。forward term style が自然演繹証明のテキストシリアライゼーションだと考えることができる。
backward tactic style は、シーケント計算のリーズニング図の逆方向でのテキストシリアライゼーション。逆方向である点が難しくしている。