数学理論はすべて命題と呼ばれる文字列によって記述されます。したがって、まず命題とはどういう文字列のことなのかということをきちんと定義しなければなりません。
そこで、まず最初に、文字列の構成要素である文字について、これを次の a ~ f のいずれかのことであると定義します:
変数と £ 以外の文字を記号、論理接続詞と量化記号を総称して論理記号といいます。また、文字をいくつか並べ、それらのうちいくつかの文字同士を鎖とよばれる線で結んだものを文字列とよびます。また、引数の個数が n の記号は n変項であるともいいます。
更に、文字列のうち、変数、関数記号、項型量化記号のいずれかで始まるものを項型文字列とよび、述語記号、論理接続詞、命題型量化記号のいずれかで始まるものを命題型文字列とよぶことにします。
また、κ を量化記号、x を変数、S を文字列とするとき、まず κ と S を順に並べた文字列 κS を作り、S の中の x をすべて冒頭の κ と鎖で結んでから、文字 x をすべて £ で置き換えて得られる文字列を κxS と表すことにします。この文字列には変数 x は現れていません。
通常の定義では κ ,x ,S をただ並べた文字列を考え、x を束縛変数と呼ぶのですが、あとで式の代入という操作を考える際に、束縛変数という概念があると、煩わしい制約条件を課さなければならず、これを避けるため、Bourbaki
に従ってこのようなテクニックを用います。
とはいっても、現実に数学の理論を文字列によって記述する際は、文字列 κxS を鎖を用いて正直に表現することはありません。この鎖を使うという定義は、あくまで文字列に関する議論(超数学)を行なう際に煩わしさを避けるための方便に過ぎません。なお、鎖はどの文字とどの文字を結んでいるかだけが問題なので、鎖に“形状”の違い(例えばカドの有無等)があっても、他の要素が同じ文字列は同一の文字列とみなします。
さて、文字列からなる列は、その構成要素である各文字列 S が次のいずれかの条件を満たすとき論理式の構成手続きといいます:
,Tn¼,
,Tn¼,
,Pn¼,
論理式の構成手続きの構成要素になることができる文字列を論理式とよび、項(命題)型文字列であるような論理式を項(命題)とよびます。
上の定義は、記号を式の頭に置くポーランド式と呼ばれている流儀を採用しており、これだと括弧を用いる必要がありません。ただこの記法で実際に数学を記述すると、式が見難いものとなってしまうので、現実には例えば 1¼Tn(T
1 ,¼, Tn )2個の場合は例えば 2つの文字列の途中に記号を置いて (P) s (Q)
ただ、論理式に関する議論(超数学)を行なうときは、括弧の概念がない方が議論しやすいので、以下では項や命題は本来ポーランド式で書かれているものとして議論を展開することにします。
上記の定義から明らかに、以下の主張が成立します:
(1-1a)変数 |
(1-1b)n変項の関数記号 f に続けてn個の項 ,Tn |
(1-1c)n変項の述語記号 p に続けてn個の項 ,Tn |
(1-1d)n変項の論理接続詞 s に続けてn個の命題 ,Pn |
(1-1e)τ を引数が項(命題)であるような項型の量化記号、x を変数、S を項(命題)とするとき、τxS は項である。 |
(1-1f)π を引数が項(命題)であるような命題型の量化記号、x を変数、S を項(命題)とするとき、πxS は命題である。 |
x を変数、S , T を文字列とするとき、S の中の x のところを一斉に T で置き換えて得られる文字列を (T | x)
S(T | x)
S
さて、C を論理式の構成手続きとし、x を変数、y を C に現れない変数とするとき、C の x を一斉に y に置き換えて得られる文字列の列 ( y | x)
C
実際、C の各構成要素 S に対し、( y | x)
S
まず S が変数 z なら S' は y 又は z ですから、やはり変数です。
次に、S が引数の個数がnの関数記号、述語記号又は論理接続詞 λ と、C で S より手前に現れる論理式 1 ,
Sn¼, 1¼Sn1¼S'n
最後に S が量化記号 κ と変数 z と C で S より手前に現れる論理式 U による
もし z が x なら、S には x が現れないので S' は S 自身であり、これは
また z が x でなくかつ y なら、仮定により y が U に現れないので S は
最後に z が x でも y でもなければ、S' は
以上で主張は確かめられました。
なお、上記のような変数の置き換えを退避変換と呼ぶことにしましょう。
この結果を用いて、S を論理式とするとき、変数 x を項 T で置き換えた (T | x)
S
実際、C を論理式の構成手続き、S をその任意の構成要素とし、C に、T に現れない変数への退避変換を何回か(0回でもよい)施したものを (T | x)
S'
まず、S が変数なら、S' も変数ですからそれを y とすると、(T | x)
S'
次に、S が引数の個数がnの関数記号、述語記号又は論理接続詞 λ と、C で S より手前に現れる論理式 1 ,
Sn¼, 1¼Sn1¼S'n(T | x)
S'i(T | x)
S'1¼S"n
最後に S が量化記号 κ と変数 y と C で S より手前に現れる論理式 U による
このとき、C にも T にも現れず、上記の退避変換に登場する変数とも x とも異なる変数 u を取ると、(u | z)
U'(u | z)
U'(T | x)(u | z)
U'(T | x)(u | z)
U'(T | x)
κzU'(T | x)
S'
以上で S が項(命題)なら (T | x)
S
次に推論とよばれるプロセスを定義します。
1 ,
Pn¼, 0 でもよい)、これらをカンマと記号 ® で繋げて得られる文字列 1 ,
Pn¼, ® Rsequent
とよび、その ® の左側にある命題群を仮定、右側にある命題 R を結論といいます。また、各sequent
に対し、その仮定の中に現れる変数を定数といい、現れない変数を自由変数といいます。
さて、sequent
を推論規則とよばれる規則に従って並べたものを証明文とよび、記号と推論規則の一式を与えたものを理論といいます。また、ある理論における証明文に現れることができるsequent
を、その理論の定理といい、その任意の証明文を、そのsequent
の証明といいます。
そこで、推論規則の具体例を提示しましょう。次の推論規則は構造に関する推論規則とよばれているもので、これらの推論規則を持つ理論を論理的な理論とよぶことにします:
| ( 同 一 ) | 証明文に既に書かれているsequentと同じ sequentを証明文の最後に追加することができる。 |
| ( 仮 定 ) | 結論が仮定の中に現れている任意のsequentは、証明文の最後に追加することができる。 |
| ( 増 ) | 証明文に既に書かれているsequentの仮定に任意の命題を追加して得られる sequentを証明文の最後に追加することができる。 |
| ( 減 ) | 証明文に既に書かれているsequentの仮定に同一の命題が2回以上現れているとき、その中の一つを削除した sequentを証明文の最後に追加することができる。 |
| ( 換 ) | 証明文に既に書かれているsequentの仮定の中の任意の2つの命題を入れ替えた sequentを証明文の最後に追加することができる。 |
| ( 切 断 ) | ある命題群 ,Pn sequentと、最初の命題群に Q を追加した仮定を持ち、R を結論に持つ sequentが共に証明文に書かれているとき、最初の命題群を仮定に持ち、R を結論に持つ sequentを証明文の最後に追加することができる。 |
| ( 代 入 ) | 証明文に既に書かれているsequentのある変数を一斉にある項で置き換えた sequentを、同証明文の最後に追加することができる。 |
上記の推論規則は言葉で書かれているのでわかりにくい面もあります。そこで、推論規則を図式で表した推論図というものを導入しましょう。
これは、横線を一本引き、その上にいくつかのsequent
を並べ、横線の下に一個のsequent
を書いたもので、横線の上を上段、横線の下を下段とよびますが、“上段のsequent
がすべて証明文に現れている場合は、下段のsequent
を最後に付け加えることができる”という意味の推論規則を表すものです。この推論図を使って上記の構造に関する推論規則を書き下すと、次のようになります:
| ( 同 一 ) | Γ Γ ® |
| ( 仮 定 ) | Γ,P |
| ( 増 ) | ΓP ® |
| ( 減 ) | Γ, P,P P ® |
| ( 換 ) | Γ, P, Δ, Q, ΘΘ |
| ( 切 断 ) | Γ Γ ,P ® Q Γ ® |
| ( 代 入 ) | ΓΓ ® (T | x)P |
ただし、P , Q , R はいずれも任意の命題を、T は任意の項を、x は任意の変数を、Γ , Δ , Θ はいずれも複数の命題(空でもよい)をカンマで区切って並べたものを表します。また、2番目の ( 仮 定 ) は、上段が空なので、横線を省略しました。
さて、( 同 一 ) は、「一度正しくなった定理はずっと正しいままである」ことを意味し、( 仮 定 ) は、「正しいと仮定した命題は正しい」ことを意味し、( 増 ) は「正しい定理は仮定を追加しても正しい」ことを意味し、( 減 ) は「同じ仮定を2個以上置いても同じことである」ことを意味し、( 換 ) は「仮定は順序に関係ない」ことを意味し、( 切 断 ) は「既に正しいとわかった命題は仮定に追加してもかまわない」ことを意味し、( 代 入 ) は「定理の変数を任意の項で置き換えてもやはり正しい」ことを意味していますから、内容的にはいずれも“自明”な推論規則であるといえます。
事実、sequent
や変数という概念と、それらに対する上記の推論規則は、形式化の原理ともいうべき指導原理によって“導出”することができます(付録2参照)。
さて、次に具体的な論理記号と、その論理記号に関する推論規則を導入することにします。
最初は引数の個数が 2 の論理接続詞 Ù で、ÙPQ Ù Q
| ( |
Γ Γ ® Q Γ |
|
| ( |
Γ Γ ® |
Γ Γ ® |
次は、引数の個数が 2 の論理接続詞 Ú で、ÚPQ Ú Q
| ( |
Γ Γ |
Γ Γ |
| ( |
Γ Γ ,P ® R Γ ,Q ® R Γ ® |
次は、引数の個数が 2 の論理接続詞 Þ で、ÞPQ Þ Q
| ( |
Γ,P Γ ® P Þ |
| ( |
Γ Γ ® P Γ ® |
次は、引数が命題であるような命題型量化記号 " で、"xP
| ( |
Γ Γ ® " |
( x¢Γ ) |
| ( |
Γ Γ ® (T | x)P |
ただし ( " 導入) の横の但し書き ¢
Γ
次は、引数が命題であるような命題型量化記号 $ で、$xP
| ( |
Γ(T | x)P Γ ® $ |
|
| ( |
Γ Γ ,P ® Q Γ ® |
|
ただし ( $ 導入) の横の但し書き ¢Γ,
Q
以上の論理記号と推論規則を持つ論理的な理論を最小論理といい、最小論理に、引数の個数が 0 の論理接続詞 ^ を、次の推論規則:
| ( | Γ Γ ® |
と共に追加した理論を直観主義論理といいます。
さて、上記の Ù Q Ú Q Þ Q"xP$xP^ は、順にそれぞれ“命題 P と命題 Q が共に証明された”という事実、“命題 P と命題 Q の少なくとも一方が証明された”という事実、“命題 P を仮定に追加したら、命題 Q が証明された”という事実、“命題 P が自由変数 x に対して証明された”という事実、“命題 P の変数 x に、ある項を代入した命題が証明された”という事実、“証明され得ない命題である”という事実を形式化の原理によって一つの命題として表わしたものであるということが“導かれ”ます(付録2参照)。
そこで、実際に推論を展開するときには、日常言語を流用して、 Ù Q Ú Q Þ Q"xP$xP^ のことを「矛盾」とも書くことにします。
なお、( ~
導入) と書かれた推論規則を、当該論理記号の導入規則、( ~
消去) と書かれた推論規則を、当該論理記号の消去規則とよびます。
ところで、実際に推論を行う際に、いつも仮定を含むsequent
をいちいち書き下すのは煩わしいことです。
そこで、sequent
を用いずに、証明の冒頭で、ある命題群 Γ を公理であると宣言して、以後はその公理のもとで成り立つ命題のみを書き下していき、それらの命題のことを、公理系 Γ のもとでの定理とよぶ、という流儀の推論体系を考え、これを自然推論と名付けます(これに対し、sequent
を用いる証明方法をsequent
計算といいます)。
自然推論では、一般に異なる公理系のもとでの推論を同時並行で行い、ある公理系 Γ のもとでの推論に、別の公理系のもとでの推論結果を利用することがあります。例えば、公理系 Γ のもとで推論しているとき、一時的に Γ に命題 P を追加した公理系 ,
P
sequent
計算による証明を自然推論による証明に変換するのは簡単で、次々に得られていくsequent
® P
逆に、自然推論における証明をsequent
計算による証明に変換するには、この逆の行為、すなわち自然推論において、公理系 Γ のもとで P が定理として得られたら、sequent
® P
さて、上で挙げた論理記号に関する推論規則を自然推論に対する推論規則として書き直せば、次の表のようになります:
記号 ÙÚÞ"$^導
入
規
則P
Q
PÙQ
P
PÚQQ
PÚQP├ Q
PÞQ P
(x¢As)"xP (T | x)P$xPナ
シ消
去
規
則
P ÙQ
PP ÙQ
QP ÚQ
P├ R
Q├ R
RP ÞQ
P
Q"xPP
(T | x)$xP
P├ Q (x¢As, Q )Q
^
P
ただし、( " 導入) と ( $ 消去) における但し書き中の As
は、推論を行っているときの公理系 Γ を意味します。
さて、( Ú 消去) は場合分けの方法とも呼ばれ、自然推論では“P 又は Q である。P のときは … R となり、Q のときも … R となり、いずれにせよ R が成り立つ。”というような言い回しによって、この推論規則を使っていることを示唆します。
また ( Þ 消去) は三段論法とも呼ばれています。
また ( $ 消去) は x を補助定数とする補助定数の方法とも呼ばれ、自然推論では“P を満たす x が存在する。そこでそのようなものの一つ x をとると … Q が成り立つ。これは x によらないので Q は証明された。”というような言い回しによって、この推論規則を使っていることを示唆します。
P を命題とするとき、命題 Þ ^ØPØP
| ( |
P├ Q P├ |
| (弱 |
P Q |
ただし、これらの“図式”は、( Ø 導入) が ØQØPØ消去) が P と ØP
実際、ØQØQ Þ ^Þ消去) により ^ が得られ、これは ^Þ導入) により Þ ^ØP
また、P と ØP Þ ^Þ消去) により ^ が得られ、更に (^消去) を用いれば Q が得られます。
ところで、Ø を省略記号ではなく、引数の個数が 1 の論理接続詞で、上の二つを Ø に関する推論規則だと見なすこともできます。このように、Ø を本来記号と見なした場合、逆に論理記号 ^ の方を、勝手に選んだ命題 R に対する Ù (
ØR)
実際、 Ù (
ØR)Ù 消去) により R と ØRØ消去) により勝手な命題 P が導かれ、これは ( ^ 消去) に他ならないからです。
次に、いわゆる二重否定 ØØP ^ で表現すれば、(P
Þ ^) Þ ^
そこで、直観主義論理の論理記号に、引数の個数が 1 の( Þ ^Ø を加え、推論規則に (Ø導入) と次の (Ø消去) を加えた推論体系を古典論理といいます:
| ( | P |
この推論規則は二重否定の消去とも呼ばれますが、この (Ø消去) を用いると (弱Ø消去) が導かれることや、二重否定の消去と同等な他の推論規則については第3節で論じます。
なお、次節以降で実際に推論を展開していくわけですが、本稿では古典論理のような“正しいと仮定しても矛盾を生じない”だけの命題を正しいことにしてしまうというような緩い立場はとらず、断りない限り、直観主義論理をベースに理論を展開します。更に、後で集合の概念を導入しますが、その場合も、数学のデファクト・スタンダードであるZF
集合論やBG
集合論ではなく、形式上の観点から根拠が正当化される公理のみを仮定するという立場をとります。このような数学を構成主義数学といい、様々なバリエーションがありますが、本稿の理論展開はそのようなものの一つです。