VOOZH about

URL: https://qiita.com/41semicolon/items/e2cf49b7fa72167c521c

⇱ 直観主義論理 五つの定理の同値性 #Coq - Qiita


👁 Image
3

Go to list of users who liked

0

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 1 year has passed since last update.

@41semicolon(41semicolon)

直観主義論理 五つの定理の同値性

3
Last updated at Posted at 2019-10-20

概要

直観主義論理 と 古典主義論理 の違いは、<排中律> を公理として採用するか否かです。そして、採用する公理は<二重否定除去> でもよいとも知られています。

つまり、直感主義論理の導出関係において、<排中律>と<二重否定除去>は同値です。同様に<パースの法則> や ドモルガンの法則(のうちのひとつ)も同値な論理式です。

そこで、これら 5つの論理式の同値性を Coq を使って示します。これにより 5つのうちどれか一つを公理とすれば、直観主義論理の証明能力を 古典論理のそれに匹敵させるのに十分である ことを示します。

なお、Coq の標準ライブラリでは <排中律> を公理として、それ以外の論理式を証明しています。

5つの論理式

5つの論理式を記載し、Coq上で扱う際の名前を付けます:

  • $P \lor \lnot P.$ 排中律。識別子はLEM
  • $\lnot\lnot P\to P.$二重否定除去。識別子は DNE
  • $((P\to Q)\to P)\to P.$ パースの法則。識別子は PEIRCE
  • $(P\to Q)\to\lnot P \lor Q.$ 含意の書き換え。識別子は IMPCASE
  • $\lnot(\lnot P \land \lnot Q)\to P\lor Q.$ ドモルガン則の一例。識別子は MORGAN4

5つのチョイスは Software Foundation の練習問題からです(が、さらに Coq'Art がその元ネタだそうです)。

Coq 風に書き下します:

DefinitionLEM:=forall(P:Prop),P\/~P.(* law of the excluded middle *)DefinitionDNE:=forall(P:Prop),~~P->P.(* double negation elemination *)DefinitionPEIRCE:=forall(PQ:Prop),((P->Q)->P)->P.(* law of Peirce *)DefinitionIMPCASE:=forall(PQ:Prop),(P->Q)->~P\/Q.DefinitionMORGAN4:=forall(PQ:Prop),~(~P/\~Q)->P\/Q.

同値性の証明

以下のようないくつかの循環ができるので同値性の証明ができます

  • 循環1: LEM → DNE, DNE → MORGAN4, MORGAN4 → LEM
  • 循環2: LEM → IMPCASE, IMPCASE → LEM
  • 循環3: LEM-> PEIRCE, PEIRCE -> DNE, 1の循環を利用

上記の循環を意識して同値性の証明を記載しておきます:

DefinitionLEM:=forall(P:Prop),P\/~P.(* law of the excluded middle *)DefinitionDNE:=forall(P:Prop),~~P->P.(* double negation elemination *)DefinitionPEIRCE:=forall(PQ:Prop),((P->Q)->P)->P.(* law of Peirce *)DefinitionIMPCASE:=forall(PQ:Prop),(P->Q)->~P\/Q.DefinitionMORGAN4:=forall(PQ:Prop),~(~P/\~Q)->P\/Q.Lemmal_d:LEM->DNE.Proof.introslemPH.destruct(lemP).assumption.contradiction.Qed.Lemmad_m:DNE->MORGAN4.Proof.introsdnePQH.applydne.introsH1.applyH.split;intros?;applyH1;[left|right];assumption.Qed.Lemmam_l:MORGAN4->LEM.Proof.introsmorP.applymor.intros[H1H2].contradiction.Qed.Lemmai_l:IMPCASE->LEM.Proof.introsimpP.applyor_comm.applyimp.intros;assumption.Qed.Lemmal_i:LEM->IMPCASE.Proof.introslemPQH.destruct(lemP).right.applyH.assumption.left.assumption.Qed.Lemmap_d:PEIRCE->DNE.Proof.introsHPH1.applyHwith(Q:=False).intros.contradiction.Qed.Lemmal_p:LEM->PEIRCE.Proof.intros????.destruct(HP).assumption.applyH0.intros.contradiction.Qed.Theoremlem_dne_iff:LEM<->DNE.Proof.split.applyl_d.intros.apply(m_l(d_mH)).Qed.Theoremlem_peirce_iff:LEM<->PEIRCE.Proof.split.applyl_p.intros.apply(m_l(d_m(p_dH))).Qed.Theoremlem_impc_iff:LEM<->IMPCASE.Proof.split.applyl_i.applyi_l.Qed.Theoremlem_morgan4_iff:LEM<->MORGAN4.Proof.split.intros.apply(d_m(l_dH)).applym_l.Qed.

参考文献

3

Go to list of users who liked

0
0

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3

Go to list of users who liked

0