|| 証明の記号操作の根拠になるもの
「証明」について「記号化したもの」
スポンサーリンク
目次
シークエント「証明の記号的な表現方法」
シークエント計算「シークエントを使った計算」
構造規則「証明の構造から考えて明らかな規則」
コンテキスト「規則が適用されない記号の集まり」
推件式 Sequent
|| 前提と結論を記号で分けた表現方法
『証明を表現する形』をした「記号表現」のこと
\begin{array}{ccc} 前提 & \overset{←から→が導かれる}{\longrightarrow} & 結論 \\ \\ Γ&⊢&φ \end{array}
これの『記号と意味を分離する』ための概念で
(「記号である」などのメタレベルの意味は残る)
\begin{array}{lcl} 構文段階 && Γ\vdash φ の形をした記号 \\ \\ 記号要請段階 && Γやφや\vdash の具体的な中身 \\ \\ 全体要請段階 && Γ\vdash φ 全体の振る舞いの形式表現 \end{array}
その意味はこのような形で区分されています。
(実際の運用ではメタレベルの意味しか持たない記号を指す)
記号 \vdash の変遷
これは以前ちょっと曖昧に使われていた記号で
(『最終的に証明を表現する』点では一致していた)
\begin{array}{ccc} 証明 &\overset{中身を記号で表現して整理}{\longrightarrow}& 前提\vdash 結論 \\ \\ Γ\vDash φ &\overset{モデル内での表現に形成}{\longrightarrow}& Γ\vdash φ \end{array}
だいたいこのような意味で使われていました。
(本質的には同じだが役割と厳密さに差異がある)
\begin{array}{ccc} Γ\vdash φ &\longrightarrow& この記号表現を推件式と呼ぼう \end{array}
これを整備したのが「推件式」で
(ここで \vdash は「ただ置かれるだけの記号」になる)
\begin{array}{ccc} 直感的な意味での証明 &\to& 推件式の形 \\ \\ 記号的な意味での証明 &←& 推件式の形 \end{array}
これにより「証明である(述語)」を
より厳密な形で定義できるようになりました。
(証明?文の記号表現 → 記号の形チェック)
推件式の意味的な要請的定義
↑ では「推件式の形」は定義されましたが
\begin{array}{ccl} Γ && 前提を表しているはず \\ \\ \vdash && 左側から右側が導かれるを意味するはず \\ \\ φ && 結論を表しているはず \end{array}
これらについての定義はまだされていません。
(チェック対象の範囲がまだ広過ぎる)
\begin{array}{ccl} Γ,\vdash,φ &←& この定義も必要 \\ \\ Γ\vdash φ &←& これがどう振る舞うかも必要 \end{array}
この部分が「意味的に要請される定義」であり
(ここでの『意味』はメタレベルの意味以外の意味)
\begin{array}{ccc} 規則上は大丈夫な記号操作 &\to& 証明計算 \end{array}
この「定義に従う」という形で
『証明の計算』は定義されています。
使われる記号への要請的定義
これについては
\begin{array}{ccc} Γ &\Longleftrightarrow& 前提 \\ \\ φ &\Longleftrightarrow& 結論 \\ \\ Γ\vdash φ &\Longleftrightarrow& Γからφが導かれる \end{array}
この感覚的な定義から
( ↑ の時点では真偽が重要だが ↓ からは問われない)
\begin{array}{ccc} Γ &\Longleftrightarrow& 論理式の有限列 \\ \\ φ &\Longleftrightarrow& 1つの論理式 \\ \\ \vdash &\Longleftrightarrow& 置かれる記号 \end{array}
このような形で厳密に定義されています。
(これでもまだ『証明自体の振る舞い』は曖昧)
推件式で出てくる論理式
構文レベルでは真偽が与えられませんが
(つまりこれも推件式で用いる記号への意味的な要請)
\begin{array}{ccl} Γ &\Longleftrightarrow& 真と仮定されている論理式の有限列 \\ \\ φ &\Longleftrightarrow& 真と仮定されている論理式 \end{array}
「推件式で出てくる論理式を表す記号」には
『真であると仮定されている』という条件が付きます。
(偽の前提が入るということは全体の破綻を意味する)
\begin{array}{lcl} 推件式の論理式の真偽 &\to& 全て真と仮定 \\ \\ &\to& 真偽の確認不要 \\ \\ \\ 推件式の論理式記号 &\to& ただの記号 \\ \\ &\to& 真偽の確認不要 \end{array}
なのでそういった意味でも
「真偽を問う必要」は無い状態にあります。
(意味レベルでも構文レベルでも真仮定は自然な帰結)
推件式かどうかのチェックの流れ
補足しておくと
\begin{array}{ccl} チェック対象 &\to& 導かれるなどを記号⊢に変換 \\ \\ &\to& 自然言語表現を論理式に翻訳 \\ \\ &\to& 自然言語が残っているか \\ \\&\to& 無いならチェック対象は加工済み \end{array}
まず「論理式への変換」はこんな感じ。
(これを通過できないものはそもそも数学では扱えない)
\begin{array}{ccc} チェック対象 &\to& 加工済み対象 &\to& 推件式? \end{array}
その上で定義される
「推件式であるか」のチェック方法は
\begin{array}{lcl} 加工済み対象 &\to& 推件式の概形 Γ\vdash φ を目指す \\ \\ &\to& とりあえず記号 \vdash を置く \\ \\ &\to& φに該当する記号を\vdash の右側に置く \\ \\ &\to& Γに該当する記号を\vdash の左側に置く \\ \\ &\to& Γ \vdash φ に含まれない記号があるか \\ \\ &\to& 無いなら推件式である \end{array}
こんな感じになります。
(これにより「推件式の記号的な形」は完全に定義される)
それが証明であるのなら
以上のことが定義された時点で
『構文レベルの推件式』は定義できてるんですが
\begin{array}{ccc} 証明文 &\overset{何かしらの操作}{\longrightarrow}& 言い換えた証明文 \end{array}
『証明であるならこれができるはず』という
\begin{array}{ccc} 証明への操作 & \left\{ \begin{array}{lcccl} A,B\vdash φ &&\to&& B,A\vdash φ \\ \\ A,A\vdash φ &&\to&& A\vdash φ \end{array} \right. \end{array}
「推件式ならできるはずのこと」は
この時点ではまだ定義できていません。
(推件式を表現する記号の意味を考える段階の話)
シークエント計算 Sequent Calculus
|| シークエントの規則を元にした計算のこと
「推件式の振る舞い」から定義される『記号操作』
\begin{array}{ccc} 推件式 & \overset{推件式の振る舞い}{\longrightarrow} & 変更後推件式 \\ \\ A,A⊢φ &\to& A⊢φ \end{array}
「証明文の振る舞い」を利用したもの
(振る舞いをまとめたものが推件式全体への定義)
証明の自然言語表現と形式化
「振る舞い」と言うとちょっと曖昧ですが
\begin{array}{ccc} 自然言語表現 & & 感覚的統一 & & 記号表現 \\ \\ \\ \left( \begin{array}{c} AだしBだ \\ \\ AでありBだ \\ \\ \vdots \end{array} \right) &\to& \left(\begin{array}{ccc} Aだ+Bだ \\ \\ A ∧ B \\ \\ \vdots \end{array}\right) &\to& A,B \end{array}
要はこういう感じの話で
(真と仮定された論理式という意味的定義がスタート)
\begin{array}{ccc} AでありBである &\Longleftrightarrow& BでありAである \\ \\ A,B &\Longleftrightarrow& B,A \\ \\ \\ AでありAである &\Longleftrightarrow& Aである \\ \\ A,A &\Longleftrightarrow& A \end{array}
「推件式の振る舞い」というのは
ここで許される記号操作のことを指しています。
(これを形式としてまとめたものが構造規則になる)
整理すると
\begin{array}{lcl} 意味的な要請 && 前提は全て真であるべき \\ \\ 直感的な観察 && 実際の証明文の振る舞い \\ \\ 直感的な構造 && 明らかに許される操作の発見 \\ \\ 記号的な定義 && 許される操作を記号的な確定操作へ \end{array}
定義はこのような階層に分けられています。
(一番下の段階まで整理されたものが構造規則と呼ばれる)
構造規則 Structure Rules
|| 証明でやって良いこと
「推件式の振る舞い」を記号操作としてまとめたもの
\begin{array}{ccl} L &=& φ_1,φ_2,...,φ_n &(0≤n) \\ \\ R &=& ψ_1,ψ_2,...,ψ_n &(0≤n) \end{array}
「コンテキスト」と呼ばれる記号 L,R を使って表現される
(「0個以上の論理式の有限列」の省略表現のこと)
\begin{array}{rcccr} L,A,B,R⊢φ &&→&& L,B,A,R⊢ φ \\ \\ L,A,A,R⊢φ &&→&&L,A,R⊢φ \\ \\ L,A,R⊢φ&&→&&L,A,B,R⊢φ \end{array}
こういった形の『許される記号操作』のことを
( L,R を使うと「好きな位置の変更」をうまく定義できる)
\begin{array}{ccc} 直感的に発見される構造 &\to& 構造規則 \\ \\ ほぼ全ての文が満たす &\to& 満たすやつ全て \end{array}
「構造規則(推件式で許すべき記号操作)」と言います。
(「ほぼ全て」を「全て」にするためにルールとする)
転置規則 Permutation,Exchange
いわゆる「交換法則」に当たるもの
\begin{array}{c} L,A,B,R⊢φ &&→&& L,B,A,R⊢ φ \\ \\ Γ ⊢ L,A,B,R &&→&& Γ ⊢ L,B,A,R \end{array}
自然言語表現である ↓ を形式化した「構造規則」が
\begin{array}{ccc} AであるしBでもある &\to& BであるしAでもある \\ \\ AあるいはBである &\to& BあるいはAである \\ \\ Aである,Bである &\to& Bである,Aである \end{array}
「転置規則」と呼ばれるものになります。
( \mathrm{and} も \mathrm{or} も含めて統一的に表現する形)
縮約規則 Contraction
同様にこれも直感的に当然の話で
\begin{array}{cc} L,A,A,R⊢φ &&→&& L,A,R⊢ φ \\ \\ Γ ⊢ L,A,A,R &&→&& Γ ⊢ L,A,R \end{array}
自然言語表現の「重複統合」の感覚を
\begin{array}{ccc} AであるしAでもある &\to& Aである \\ \\ AあるいはAである &\to& Aである \\ \\ Aである,Aである &\to& Aである \end{array}
そのまま記号的に表現したものになります。
(これと転置規則は直感的に明らか)
弱化規則 Weakening
問題となるこれは
「記号への意味的な要請的定義」に由来するもので
\begin{array}{cc} L,A,R⊢φ &&→&& L,A,B,R⊢ φ \\ \\ Γ ⊢ L,A,R &&→&& Γ ⊢ L,A,B,R \end{array}
「無関係な文(論理式)」を入れる
(真と仮定されているなら追加しても変化無し)
\begin{array}{lcl} Aである &\to& AでありBでもある && ? \\ \\ Aである &\to& AあるいはBである && 〇 \end{array}
そんな記号操作を許可する規則になります。
(記号への意味的要請が無い場合は明らかに成立しない)
シークエント計算の記法
↑ で紹介した「構造規則」を用いたものが
「シークエント計算」なんですが
\begin{array}{ccc} L,A,R⊢φ &&→&& L,A,B,R⊢ φ \end{array}
これはこのままでは横に伸びてしまいます。
(これも計算の形の1つではある)
\begin{array}{ccc} 横表記だと & \left\{ \begin{array}{ll} 長くなると比較し辛い \\ \\ 単純に横方向のペースが不足する \end{array} \right. \end{array}
これによって起きる問題を解消したい
そんな要望によって得られた成果が縦に伸ばす記法で
\begin{array}{l} \mathrm{Permutation} && \displaystyle \frac{L,A,B,R\vdash φ}{L,B,A,R\vdash φ}(\mathrm{PL}) & \displaystyle \frac{Γ\vdash L,A,B,R}{Γ\vdash L,B,A,R}(\mathrm{PR}) \\ \\ \\ \mathrm{Contraction} && \displaystyle \frac{L,A,A,R\vdash φ}{L,A,R\vdash φ}(\mathrm{CL}) & \displaystyle \frac{Γ\vdash L,A,A,R}{Γ\vdash L,A,R}(\mathrm{CR}) \\ \\ \\ \mathrm{Weakening} && \displaystyle \frac{L,A,R\vdash φ}{L,A,B,R\vdash φ}(\mathrm{WL}) & \displaystyle \frac{Γ\vdash L,A,R}{Γ\vdash L,A,B,R}(\mathrm{WR}) \end{array}
これが「推件式計算」の基本的な表現方法になります。
( ↑ から ↓ が導かれるという形で証明文の変形が表現される)
コンテキスト
「コンテキスト L,R 」という記号は
\begin{array}{ccc} コンテキスト &\Longleftrightarrow& 規則を適用しない記号の有限列 \end{array}
『変えない記号』を表すものなので
\begin{array}{c} A,B,C,D,E⊢φ &&→&& A,C,B,D,E⊢ φ \\ \\ A,B,C,D,E⊢φ &&→&& A,B,D,C,E⊢ φ \\ \\ A,B,C,D,E⊢φ &&→&& A,B,C,E,D⊢ φ \\ \\ A,B,C,D,E⊢φ &&→&& B,A,C,D,E⊢ φ \end{array}
「転置規則」による並べ替えを根拠とすると
\begin{array}{ccc} \displaystyle \frac{A,B,C,D,E\vdash φ}{A,B,D,C,E\vdash φ}(\mathrm{PL}) &&\to&& \displaystyle \frac{L,B,D,R\vdash φ}{L,D,B,R\vdash φ}(\mathrm{PL}) \end{array}
任意に「使わない記号」として整理され
(使わない記号を左か右に寄せればコンテキストへ)
\begin{array}{lcll} A,Bだけ変更 &\to& Lは無 & RはC,D,E \\ \\ B,Cだけ変更 &\to& LはA & RはD,E \end{array}
『統合(記号の有限列という意味は保持)』が可能になります。
(厳密には中身が変化する記号だが要請的意味は変化無し)
コンテキストの解釈
「中身に変更がある」のに
『同じ記号を使うのは変』じゃないか?
\begin{array}{ccc} 整理前コンテキスト &\to& 整理後コンテキスト \\ \\ L &\to& L^{\prime} \end{array}
これはもっともな指摘なんですが
\displaystyle \frac{L,A,B,R\vdash φ}{L^{\prime},B,A,R^{\prime}\vdash φ}(\mathrm{PL})
「別の記号を使う」と『見辛く』なります。
(その上コンテキスト自体はあまり重要では無い)
\begin{array}{ccc} 本筋とは無関係な記号 &\to& 変化を追う必要は? \end{array}
なので「コンテキスト」の仕様として
『意味の消失と再定義が起きる』
\begin{array}{lcl} 規則適用前 && コンテキストはそのまま \\ \\ 規則適用 && 適用されない記号を左右に寄せられる \\ \\ L,Rの変更 && 適用されない記号をL,Rに吸収できる \\ \\ L,Rの初期化 && ここでL,Rの記号の中身を初期化する \\ \\ L,Rの再定義 && 記号L,Rを再利用することが可能 \\ \\ 規則適用後 && コンテキストの中身には変更があった \end{array}
これを予め定義しておくことで
\begin{array}{ccl} ↑ のL,R &\to& ↑ 時点でのみ同一 \\ \\ &\to& ↓ 時点では同一とは限らない \end{array}
この問題は解消することにします。
(この定義を根拠としないなら厳密には別記号が必要)
LKの推論規則
これに加える形で
「命題記号」や「述語記号」を入れたもの
\begin{array}{ccc} 純粋化された推件式 &\to& \mathrm{LK}の推論規則 \\ \\ 基礎的な振る舞い &\to& より実際的な振る舞い \end{array}
それが「LKの推論規則」と呼ばれるもので
「構造規則まで」が『純粋な推件式の体系』になります。
