アットウィキロゴ

対象物指向形式化数学

数学mathematics

 数学(の内容)content of mathematics)は様々な基盤言語substrate language)の上で記述される。

 通常は日本語や英語などの自然言語の上で記述されることが多い。

 一方で、数学を計算機上で表現、記録、伝達しようという試みも行われている。この場合、数学は一種の計算機言語の上で記述される。このような言語は形式的な文法によって定義された人工言語である。

 このような言語の1つとして、Mizar言語がある。Mizar言語は一階古典述語論理(体系)classical first-order predicate logical system)とTarski-Grothendieck集合論Tarski-Grothendieck set theory)を基盤として数学の記述のためだけに作られた独自の言語である。自然言語の上で数学が記述される場合とできる限り同様の用語および記法を採用しており、その記述が自然言語の上で記述される数学の記述と類似したものになるように工夫されている(が、実際のところ、かなり異質であると個人的には感じる)。

 また、そのような言語の1つとして、Coq言語がある。Coq言語は数学の記述のために作られたものと言うよりは、依存型付け関数型言語を基盤として、定理証明を行うための便利な機能を追加したものと言った方がより実情に即しているだろう。数学の記述の他に、電子回路、通信手順(の実装)、様々な算法(の実装)などの正当性(所与の仕様に準拠していること)の証明のために利用されることも多い。

 数学を記述するためには論理(体系)logical system)が必要であり、数学を記述する際には基盤言語の中に埋め込まれている論理を利用する。たとえば、日本語や英語などの自然言語には論理が埋め込まれており、自然言語の上で数学を記述する場合はその論理を利用することになる。また、Mizar言語は先述のように一階古典述語論理を基盤としており、Mizar言語の上で数学を記述する場合は、基盤としている一階古典述語論理を利用することになる。更には、論理(体系)自体を数学的に構築することもでき、予め数学的に構築された論理の上で別の数学を記述することもできる(なお、この際に必ずしも論理そのものを数学的に構築する必要はなく、代わりに論理が埋め込まれている何らかの体系を構築しても良い。たとえば、最初に圏論を数学的に構築し、その圏論の上で別の数学を記述することもできる。このようなことが可能なのは圏論に論理が埋め込まれているからである)。

 数学を記述するために必要なのは論理が埋め込まれている言語である。この条件を満たしてさえいれば、どのような言語の上で数学を記述しても構わない(それが他人に受け入れられるかは分からないが)。

 以降では、基盤言語として対象物指向算譜言語object-oriented programming language)(主にその1つであるC#)を採用して、数学を記述していきたい。対象物指向算譜言語には論理が埋め込まれており、数学を記述するに足る(と考えている)。

 

対象物指向数学object-oriented mathematics: OOM

 あらゆる数学的物件mathematical object)を対象物object-oriented object)と考え、数学的対象物mathematical object in terms of OOM)と言うことにする。

 全ての数学的対象物はMathematical Objectであると考えることにする。すなわち、Mathematical Objectを全ての数学的対象物がそこから派生する抽象基底型とする。

 

対象物指向古典命題論理(体系)object-oriented classical propositional logical system

取り敢えず、最初に論理を構築していきたいと思う。論理にも様々なものがあるが、取り敢えず古典命題論理を構築しよう。

 

最初に必要なのは古典命題論理における式である(古典)命題論理式classical propositional formula)である。命題論理式を表す抽象基底型を命題論理式としよう。

命題論理式は命題変数、恒偽命題、否定、連言、選言、含意および等意からなり、次のような内部構造を有する。それぞれを命題論理式から派生する具象派生型と考えれば良い。

定義=高次公理 命題論理式

 命題変数恒偽命題否定連言選言含意および等意命題論理式である。

 σ文字列であり、ι整数であるならば、Propositional Variable (σ, ι)命題変数である。

 Contradiction ()恒偽命題である。

 φ命題論理式であるならば、Negation (φ)否定である。

 φ, ψ命題論理式であるならば、Conjunction (φ, ψ)連言である。

 φ, ψ命題論理式であるならば、Disjunction (φ, ψ)選言である。

 φ, ψ命題論理式であるならば、Implication (φ, ψ)含意である。

 φ, ψ命題論理式であるならば、Equivalence (φ, ψ)等意である。

 

型図式は次のようになる。

型図式

 

通常の数学での記法とほぼ同様になるように慣用表現を定めておこう。

慣用表現

 Propositional Variable (σ, ι)σP, Q, R, Sのみであるとする。

 Propositional Variable (σ, ι)σιと表すことにする。

 σ0σと表すことにする。

 Contradiction ()を⊥と表すことにする。

 Negation (φ)(φ)と表すことにする。

 Conjunction (φ, ψ)(φψ)と表すことにする。

 Disjunction (φ, ψ)(φψ)と表すことにする。

 Implication (φ, ψ)(φψ)と表すことにする。

 Equivalence (φ, ψ)(φ←→ψ)と表すことにする。

 命題論理式慣用表現の最外括弧は省略するものとする。

 ¬,,,, ←→の優先順位と結合性を次のように定め、この規則によって曖昧にならない限りにおいて、命題論理式慣用表現に含まれる括弧を省略するものとする。

  ¬:優先順位高、右結合

  ∧:優先順位中、左結合

  ∨:優先順位中、左結合

  →:優先順位低、右結合

  ←→:優先順位低、左結合

 

これで命題論理式を構築することができた。C#で実装しよう。

最終更新:2013年02月08日 15:34
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル