池田はるよしのメモ

論理学を中心に語ります。

できなくもない

「できなくもない」って表現は「できる」もしくは「できない可能性もある」

と等しく

「できるかもしれない」って表現は「できない」もしくは「できる可能性もある」

と等しいのかなと。

どちらも排中律(「できる」または「できない」)をみたさない。

システムを作るときは、特に上流工程ではこのあたりの表現を、

排中律にもっていくようにする必要がある。

お客さんから、ちょっと実現検討を要する要求が来た場合、

「それ、できなくもないですよ」

「それ、できるかもしれないですよ」

とかいうのは非常に危険で、

「○○ならばできます」

「○○でないかぎりできません」

と、排中律が成立するのを前提で、

回答するのが、安全なのだろう。

やればできるのか?

【できなかったらどうする?】

「やればできる」

この言葉は、子供や新入社員や現実と理想のギャップに気を病んでいる人に対して、わりと、安易にかけられている。

  • F:やる
  • G:できた

で記号化すると

F ⇒ G

つまり、「できた」という結果が、

「やる」という行動の必要条件になっている。

つまり、

「やってもできなかった」

(F ⇒ G) ∧ (F ∧ ¬G)

が論理的には許されない。*1

努力した結果、だめだった当事者にとっちゃ、

つらいことこの上なしで、

自信なくすか、グレるかするんだろう。

 

【やっていないといってみる】

本人の言い訳として「やらなかったから~」

とか

言ったほうの意見として「お前はまだまだ本当はやってない」

とかいうのは、非常に曖昧だし、実りがなさすぎる。

「やる」の定義が曖昧すぎるからである。

1日1時間努力したら「やった」なのかどうか?

とか、その一時間は本気モードじゃないとだめだとか、

なんか色々文言を並べても、なんら、根拠のある条件にはならない。*2

 

 【手段を選ばず結果だけに注目させればよい】

G ⇒ F (≡「できたのはやったから」)

にすると、状況は様変わりする。

この場合、できなかった(¬G)でも、

やったかやらなかったかは、論理上どちらもありえる。

出来なかったとしても、割と、冷静に原因を分析できそうだし、

「やってたらな~」みたいな、根拠のない可能性に期待をかけることもしないだろう。

 

【やらないのにできた】

ただし、「やらなかったのにできた」

場合には論理矛盾を起こす*3

この場合は、できるからいいんじゃない。と思う。*4

 

【まとめ】

努力を条件として、結果を必要条件にする形、

すなわち、「努力した ⇒ 結果がでた」

を発言する時は注意しなければならない。

結果がでなかった時は、現実逃避か、感情的に攻め立てるかしかなくて、

論理上は解決できないからである。

「結果がでた ⇒ 努力した」

と努力を必要条件にすれば、

結果がでなかったとしても、

努力したことを否定せずに、「運がわるかった」とか、「努力した方向がまちがった」とか、いくつでも言い訳が論理的にたつし、わりと冷静に状況対応できそうだ。

 ■■

*1:[証明]

(F ⇒ G) ∧ (F ∧ ¬G)

≡ (¬F ∨ G) ∧ (F ∧ ¬G)

≡ {( ¬F∧ F ∧ ¬G ) ∨ ( G∧ F ∧ ¬G )}

⇒ D ∧ ¬D  ・・・矛盾する。

*2:「やらなかった」も「やった」結果なんだと個人的には思うのだが、、、

*3:[証明]

(G ⇒ F) ∧ (G ∧ ¬F)

≡ (¬G ∨ F) ∧ (G ∧ ¬F)

≡ {( ¬G∧ G ∧ ¬F ) ∨ ( F∧ G ∧ ¬F )}

⇒ D ∧ ¬D  ・・・矛盾する。

*4:「やらなかった」の主張を通すのはかなり難しいと思うけど。

問題を解く(2)【∀の範囲と∃との関係】

三浦俊彦著「論理学入門」の演習問題25を考える。

演習問題25

次の3つの命題の意味の相違をはっきりさせつつ日本語で表現してみよう。

(1)∀x ( xは脳死になる ⇒ xは臓器提供する ) ⇒ 平均寿命が1割増える

(2)∀x { xは脳死になる ⇒ ( xは臓器提供する ⇒ 平均寿命が1割増える )}

(3)∀x {( xは脳死になる ⇒ xは臓器提供する ) ⇒ 平均寿命が1割増える}

【まずは記号化】

  • Fx:脳死になる
  • Gx:臓器提供する
  • A:平均寿命が1割増える

とすると、

(1) ∀x ( Fx ⇒ Gx ) ⇒ A

(2) ∀x { Fx ⇒ ( Gx ⇒ A )}

(3) ∀x {( Fx ⇒ Gx ) ⇒ A }

 

【∀が命題関数だけなら楽】

(1)は∀のかかる範囲にAがないので、そのまま解釈すればよい。

∀x ( Fx ⇒ Gx )はAの十分条件

また、

∀x ( Fx ⇒ Gx )

≡ ∀xFx ⇒ ∀xGx

なので、

「すべての脳死になった人が臓器提供すれば、平均寿命が1割増える」

 

【全称と存在の関係】

(2)(3)は少しむつかしい。

これを解くためには、

(補1)∀x ( Mx ⇒ D ) ≡ ∃xMx ⇒ D

を理解する必要がある。

イメージしやすいように、

とすると、

ペレリマンがポアンカレの予想を解く前も後でも、

真であることがわかる。

実際証明すると、

----

〔証明〕

¬{∀x ( Mx ⇒ D ) ≡ ∃xMx ⇒ D}

≡ {∀x ( Mx ⇒ D ) ∧ ¬(∃xMx ⇒ D ) } ∨ {¬∀x ( Mx ⇒ D ) ∧ (∃xMx ⇒ D )}

⇒ {( ¬Ma ∨ D) ∧ (Ma ∧ ¬D )} ∨ { ∃x ( Mx ∧ ¬D ) ∧ ( ∀x¬Mx ∨ D) }

⇒ {( ¬Ma ∧ Ma ∧ ¬D ) ∨ ( Ma ∧ ¬D ∧ D )} ∨ {( Ma ∧ ¬D ) ∧ ( ¬Ma ∨ D) }

⇒ {( ¬Ma ∧ Ma) ∨ (¬D ∧ D )}

なので、矛盾。

よって、∀x ( Mx ⇒ D ) ≡ ∃xMx ⇒ D

----

 

【一人いたら全体が変わる】

(2)は(補1)を利用すると、

∀x { Fx ⇒ ( Gx ⇒ A )}

≡ ∀xFx ⇒ ∀x( Gx ⇒ A )}

≡ ∀xFx ⇒ (∃xGx ⇒ A )

つまり、

脳死した人の中で一人でも臓器提供すると、平均寿命が1割増える」

 

(3)は(補1)を利用すると、

∀x {( Fx ⇒ Gx ) ⇒ A }

≡ ∃x ( Fx ⇒ Gx ) ⇒ A

つまり、

脳死したら臓器提供するという人が一人でもいたら、平均寿命が1割増える」

 

【属人化をとらえる】

命題関数を定義しなおす。

  • Fx:プロジェクト要員である
  • Gx:期待通りの活躍をする
  • A:プロジェクトがうまくいく

とすると、

(1) ∀x ( Fx ⇒ Gx ) ⇒ A

「プロジェクト要員みんな、期待通りの活躍をすれば、プロジェクトがうまくいく。」

(2) ∀x { Fx ⇒ ( Gx ⇒ A )}

「プロジェクト要員のだれか一人でも期待通りの活躍をすれば、プロジェクトがうまくいく。」

(3) ∀x {( Fx ⇒ Gx ) ⇒ A }

「プロジェクト要員になったら期待通りの活躍をできる人が一人でもいたらプロジェクトはうまくいく。」

 

(1)はプロジェクト要員みんないい感じにいけば。。という計画時の理想形。

(2)はもう、プロジェクトの要員が決まっていて、あるスペシャルな要員が期待通りに活躍してくれたら・・・という願望。たぶん、多くの人が期待外れなんだろう。

(3)は、計画時にも関わらず、「あの人がいたら、このプロジェクトは絶対いける!」という類で、もう最初から属人的な体質になるんだろう。

もしくは、プロジェクト終了時に「あの人がいたら、このプロジェクトはうまく行けたのに!」という後悔なのかもしれない・・・

 

 

 

問題を解く(1)【∃とその範囲】

三浦俊彦著「論理学入門」の演習問題24を考える。

演習問題24*1

次の3つの命題の意味の相違をはっきりさせつつ日本語で表現してみよう。

(1)∃x  ( xは殺人者である ∧ xは放置される ) ⇒ 社会が崩壊する

(2)∃x  { xは殺人者である ∧ ( xは放置される ⇒ 社会が崩壊する )}

(3)∃x  {( xは殺人者である ∧ xは放置される) ⇒ 社会が崩壊する }

 

【まずは記号化】

  • Fx:殺人者である
  • Gx:放置される
  • D:社会が崩壊する

とすると、

(1)∃x ( Fx ∧ Gx ) ⇒ D

(2)∃x { Fx ∧ ( Gx ⇒ D )}

(3)∃x {( Fx ∧ Gx ) ⇒ D}

 

【例化する】

(1)∃x ( Fx ∧ Gx ) ⇒ D

≡ ∀x ¬( Fx ∧ Gx ) ∨ D

これを例化する。この世に個体がa,bの二つだけしかないと限定すると、

¬( Fa ∧ Ga ) ∧ ¬( Fb ∧ Gb ) ∨ D

 ≡ {( Fa ∧ Ga ) ∨ ( Fb ∧ Gb )} ⇒ D

つまり、

「放置された犯罪者が一人でもいたら、社会が崩壊する。」

 

 (2)∃x { Fx ∧ ( Gx ⇒ D )}

これを例化すると、

Fa ∧ (Ga ⇒ D)

この場合はaにターゲットは絞られている。

aはすでに、犯罪者であるが、まだ、放置はされていない。

その点を含意すると、

「放置すると社会が崩壊するような犯罪者がいる。」

 

(3)∃x {( Fx ∧ Gx ) ⇒ D}

これを例化すると

( Fa ∧ Ga ) ⇒ D

こちらも、aというターゲットはいる。

が、放置された犯罪者にはまだなってなさそうだ。

その点を含意すると、

「放置された犯罪者になったら、社会が崩壊するような人がいる。」

 

【プロジェクトをぶっ潰すような問題要員】

命題関数の内容を変えると、

結構、現実に応用できる。

  • Fx:問題要員である。
  • Gx:自由にさせる
  • D:プロジェクトが崩壊する。

この場合、

(1)∃x ( Fx ∧ Gx ) ⇒ D

「一人でも自由な問題要員がいたら、プロジェクトは崩壊する。」

(2)∃x { Fx ∧ ( Gx ⇒ D )}

「自由にさせると、プロジェクトを崩壊させるような問題要員がいる。」

(3)∃x {( Fx ∧ Gx ) ⇒ D}

「問題要員になって、自由にさせたら、プロジェクトを崩壊させるような要員がいる。」

となり、結構、臨場感がでる。

 

【困った奴の対応方法】

そーなると、プロジェクトを崩壊させない施策を考えるのが、

管理者の仕事となる。

(1)は、要員全員に目を光らす必要があるが、

(2)や(3)は、ある程度、重点管理する対象が特定できそうだ。

(3)は、ある程度「こいつは怪しい」と思う要員を重点管理することになり、優秀なPMなら、ここをきちっとする。

(2)になると、もう問題要員が発生してしまった状況になってしまっている。この場合、そいつを管理せずに自由にさせると、たちまちプロジェクトが崩壊してしまう・・・

 

【プロジェクトが崩壊しても】

たとえば、上記(2)の状態になって、なおかつ、プロジェクトが崩壊しても、

問題要員aを自由にさせた管理者がわるいのだろうか?

[前提1]  Fa ∧ ( Ga ⇒ D )

[前提2] D

[結論] Ga ・・・aを自由にしたから?

 

≪証明≫

Fa ∧ ( Ga ⇒ D ) ∧ D ∧ ¬Ga

≡ Fa ∧ D ∧ ¬Ga

⇒ ¬(α ∧ ¬α) ・・・閉じない。

つまり、aを自由にしたのが原因とはいえない。

aを管理しすぎて、委縮させてaの実力を発揮できなかったとか、

プロジェクトの予算がなくなったから、プロジェクトそのものがなくなったとか、

たぶん、いろいろ理由があるんだろう。

けどけど、

大概は「aが悪いんだ!」

で終わらせてしまうことが、世間的には多い気がする・・・

*1:原著は「⇒」ではなく「⊃」

不具合を考える

【すべての事象を対象にすると・・・】
不具合のないシステムは

¬∃x(Bx)
※B : 不具合である

どんな操作や環境下であっても、
一切の不具合が存在しない。

で、ひとたび不具合が発覚すると、
¬∃x(Bx) ∧ ∃x(Bx) ≡ ∀x (¬Bx) ∧∃x(Bx)
⇒ ¬Ba ∧ Ba

で矛盾したことになる。

 

【操作を限定する】
矛盾を引き起こしたくなければ、操作や動作、環境などを
製作側が想定したものに限定すればよい。

∀x(Tx⇒¬Bx)
※T : 製作側が想定したものである。

そうすると、たとえ、不具合が存在したとしても、それは、
製作側が想定できなかったものである。
[前提1]∀x(Tx⇒¬Bx)
[前提2]∃Bx
[結論]∃x(¬Tx∧Bx)

が言える。
----
証明:結論を否定すると、矛盾になる。
∀x(Tx⇒¬Bx) ∧ ∃xBx ∧ ¬∃x(¬Tx∧Bx)
≡ ∃x(Tx∧Bx) ∧ ∀x¬Bx ∧ ∀x(Tx∨¬Bx)
⇒ Ta∧Ba∧¬Ba∧(Ta∨¬Ba)
≡ D∧¬D
----

 

【でも、不具合はゆるされない場合】
お金関係のシステムだとか、信号など、不具合の許されないシステムは結構多い。
その場合は、製作側が想定できなかた事象はすべてエラーにすればよい。

∀x(¬Tx⇒E)
※E:エラーになる。

すくなくとも、間違いな結果を出すことはない。

[前提1]∀x(Tx⇒¬Bx)
[前提2]∀x(¬Tx⇒E)
[結論]¬∃x(¬Tx∧Bx)

 

【使わなければ不具合は起きない】
ちなみに操作しなければ、最初の条件でも、
¬∃x(Bx)
は真になり、不具合は決して起きない。

何もしなければ、失敗しないのと同じなのだろう。

不正を許さない【入試編】

【受験と合格点】
通常、受験とは試験を受けて、合格点(受験者の上位何人とかの条件込)をとったら入学できる。
これを記号化すると、
「合格点をとったら入学できる。」
A⇒B

 

【合格点がとれたかとれないか】
実際の結果により、いろいろなパターンがでてくる。
「合格点をとったら入学できる。合格点をとったんで、入学できた。」
((A⇒B) ∧ A) ⇒ B
とか
「合格点をとったら入学できる。入学できなかった。合格点をとれなかった。」
((A⇒B) ∧ ¬B) ⇒ ¬A
などは、当たり前すぎて、わりとどーでもよい。

 

【入学できたからと言って・・・】
「合格点をとったら入学できる。入学できたんで、合格点をとった。」
((A⇒B) ∧ B) ⇒ A
は一見正しく見えるが、
¬{((A⇒B) ∧ B) ⇒ A} ≡ ((A⇒B) ∧ B) ∧ ¬A ≡ ¬A ∧ B
で、Aが成立していない時、すなわち、
「合格点をとってないけど、裏口で入学できたよ。」
ができてしまう。

 

裏口入学を許さない】
裏口入学を許したくなければ、単に逆にすればいい。
「入学できたなら合格点をとっている」
B⇒A

「入学できたなら合格点をとっている。入学したんで合格点をとった」
((B⇒A) ∧ B) ⇒ A

「入学できたなら合格点をとっている。合格点をとれなかったんで、入学できなかった」
((B⇒A) ∧ ¬A) ⇒ B

これで、合格点をとれていない人の入学を阻止できそうだ。

 

【合格点はとったけど】
じゃあ、
¬B ∧ A
はどうなるのかというと、
「合格点とったけど、入学しなかった」
で、どこか違う学校に入学したんだろう。。

 

【まとめ】
●人を募集するときは、募集ルール(試験に合格して、面接も合格したら入学できる)
よりも、入学できる人はどういう人か(入学できる人は試験に合格してるし、面接も合格した)にすると、不正はわりと防げるのだろう。

言い訳を考える

【事象α】

本来できていなくてはいけないPができていない事が発生した。

Pができていない原因はAだと判明した。

 

【事象αの記号化】

A⇒¬P

ちなみにこれは、≡ ¬A∨¬P ≡ P⇒¬A

つまり、Aが発生しないことは、Pであるための必要条件である。

 

【言い訳をするということ】

ある人が事象αを言い訳したとする。

言い訳をする(A⇒¬P)

たぶん、聞き手にとっては、”言い訳をする”という動作はどうでもよくって、

「あなたはPという要件をみたすための必要条件である¬Aをなぜ満たせなかったのか」を話し手に対して問うのであろう。

 

【言い訳しないやつはいい奴か?】

¬言い訳をする(A⇒¬P)

言い訳するという関数を否定するだけ。

やはり、聞き手は、言い訳しないこともどうでもよい。

 

【言い訳する VS 言い訳しない】

じゃあ、聞き手にとって、どちらも本当に一緒なのか?

というとそうでもない。おおよそ、言い訳しない方の印象がよい。

聞き手にとっては、引数とする事象はどうであれ、

おおよそ

話し手のポイントが下がる= 言い訳をする(args)

なのだろう。

じゃあ、言い訳しないのはどうなるのかというと、

¬話し手のポイントが下がる= ¬言い訳をする(args)

で、事象がよっぽど同情の余地があるなら、話し手のポイントは上がるのであろうが、

大概はどーでもよいので、話し手のポイントは上りも下がりもしないんだろう。

 

【聞き手が期待するもの】

おそらく

説明をする(A⇒¬P)

なのだろう。

つまり、

「あなたはPという要件をみたすための必要条件である¬Aをなぜ満たせなかったのか」

に対しての説明義務をすんなり認めて説明することが重要なのだろう。

 

【話し手が言い訳するのは?】

話し手が”言い訳をする(args)"という関数を利用するのは、

その戻り値が話し手にとって、"自責じゃない"を期待するからだろう。

しかし、それは主観的なものであって、聞き手にとっては、どーでもいい話なのである。

 

【自己主張しながら聞き手に納得させるには】

主張を明示するしかないだろう。

言い訳の真意が”自責じゃない”というのであれば、

説明する(A⇒¬P) ∧ 自責ではないと主張する

なのだろう。

 

【最悪なこと】

起こった事象を隠すというのも、

世の中的にはあるのだが、

あまりいい結果を生み出さない。

隠す(A⇒¬P)

これは、

∀x(聞き手⇒¬認識する(A⇒¬P))

が必要条件として求められる。

でもこれは

∃x(聞き手∧認識する(A⇒¬P))

が満たされると破たんする。

で、大概、A⇒¬Pという事実はバレるので、

隠すのはいけないのだろう。

 

【まとめ】

●自己保身の言い訳はあまりいい結果をもたらさない。

●「事象に対する説明責任を果たす ∧ 自己主張する」が吉。

●事象を隠すのは、余程の覚悟をきめないかぎり凶。