Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
実務に役立つかもしれない数理論理学 / introduction to Mathematica...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
empitsu
May 13, 2021
Science
6.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実務に役立つかもしれない数理論理学 / introduction to Mathematical logic
Webエンジニアの部門の社内勉強会で発表した数理論理学入門の資料です。
empitsu
May 13, 2021
More Decks by empitsu
See All by empitsu
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.9k
Devin&Cursor、それぞれの「本質」から導く最適ユースケース戦略
empitsu
10
5.5k
同時多発的に価値創出していく Ubie Discoveryのフロントエンド開発 / 20211127 JSConf JP Ubie Discovery
empitsu
2
5.6k
Other Decks in Science
See All in Science
バランスって大事だね
akasan
1
160
O(log n)-Approximation Algorithms for Bipartiteness Ratio
tasusu
0
260
Conwayの法則を"ちゃんと"使うために — 原典でConwayは何を言っていたのか
bonotake
10
7.5k
Van Dare naar Durf
voginip
0
310
AlgorithAlgorihms for Decision Making
mickey_kubo
0
170
「念のためのログ保存」を組織全体でやめるためのポリシーと仕組み作り
i2tsuki
4
410
データベース04: SQL (1/3) 単純質問 & 集約演算
trycycle
PRO
0
1.8k
コーヒー豆様核 (Coffee-bean nuclei) における形態学的サブタイピングと精選・焙煎特性の同定
jagupath
PRO
0
200
ゲームと人工知能
miyayou
0
260
摂理と合理の肉体改造 — AI時代の減量を支える観測・制御・継続
kiyoshi
0
3.6k
共生概念の整理と AIアライメントの構想
hiroakihamada
0
350
Visual Linear Algebra - Lecture at Shosen Grande
hiranabe
0
630
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
780
Evolving SEO for Evolving Search Engines
ryanjones
0
310
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Google's AI Overviews - The New Search
badams
0
1.6k
エンジニアに許された特別な時間の終わり
watany
109
250k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
550
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
400
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Transcript
実務に役立つかもしれない数理論理学
自己紹介 Webフロントエンドチームのempitsuです。 React/TypeScript書いたりしています。 2020年1月からアメリカの通信制大学に入ってコンピューターサイエンスを学び直し中で す。
今日のテーマ 今日のテーマはWebフロントエンドには1ミリも関係なく、数学の話です。 めちゃくちゃ数学には苦手意識があったので最近数学を学び直し中です。 (高校数学/離散数学/線形代数あたり) ちゃんとComputer Scienceや数学を学んでる方も多いと思うのでボコボコにされにきました 超基礎的な内容ばかりですが、間違いや正確さに書ける表現は優しくフィードバックいただ けたら嬉しいです。
数理論理学 - Mathematical logic とは いつも我々が使っている Boolean というデータ型。 これは論理推論を代数で展開する「ブール代数」を考案したジョージ・ブール(1815- 1864)に由来する
(Wikipedia, 2021a)。
数理論理学は離散数学の一分野だが、数学の基礎知識。(伊藤, 2019, p41) 科学的思考の基礎となる重要な概念。(伊藤, 2019, p.41) 高校数学では数学Ⅰ「集合と命題」というトピックで触れる。
離散数学とは 「離散」とは「連続」の反対。「とびとび」になっているものを対象とした数学。 対照的なのが微積分などの解析学で、それらは連続な対象を扱う。(伊藤, 2019, p1) 計算機は0と1の2つの信号を扱うことから、離散数学の守備範囲。離散数学なしに計算 機は動かない。(伊藤, 2019, p.1) 普段プログラミングしている私達は論理で飯を食っていると言っても過言ではない(過言)
Vocabulary
真理値 - truth value, logical value 真 - trueまたは1 偽
- falseまたは0
論理変数 - Logical variable 真理値を取る変数。 PとかQとかRが使われることが多いが、なんでもよい。
ステートメント - Statement 真または偽を表す平叙文 Declarative sentence (Levin, 2019, chapter 0.2)。
平叙文とは、疑問文・感嘆文・命令文とは違って普通に終わる文。 ステートメントは命題論理式 Propositional logical expression とか単に命題 Proposition とも言う場合もある (Levin, 2019, chapter 3.1; 伊藤,2019, p.43 )。
Atomic statement Statementのうち、これ以上分割できない文を Atomic statement という (Levin, 2019, chapter 0.2)。
地球は四角い。(偽) 3 + 7 = 10 (真) 5 > 6(偽)
Molecular statement Atomic statementに分割できるものは Molecular statement (Levin, 2019, chapter 0.2)。
背中をトントンすれば、娘は寝る(真) P:「背中をトントンする」(真) Q:「娘は寝る」(真) 論理演算子を使って P→Q と書ける [JavaScript] 4 > 3 && false (偽) P: 4 > 3 (真) Q: false 論理演算子を使って P ∧ Q と書ける
論理演算子 - Logical operator, Logical connectives 論理演算子を使用してMolecular statementを作成することができる。 ¬ not
否定 - Negation JavaScriptだと !
∧ and 論理積 - conjunction JavaScriptだと && ∨ or 論理和
- disjunction JavaScriptだと ||
⇒ または → if ... then ... 包含 - implication,
conditional ⇔ if and only if ... 双条件 - biconditional (Levin, 2019, chapter 0.2; Wikipedia, 2021b) 徐々にプログラミングとのつながりが見えてきましたね
論理演算子の優先順 優先度が高い順に ¬ ∧ ∨ ⇒ ⇔ (Stanford University, n.d.)
JavaScriptも同じですね。 以下の順で演算子が適用されます。 否定 ! 論理積 && 論理和 || (Mozilla and
individual contributors, 2021)
なので、 x > 5 || y === 3 を先に評価させるつもりで以下のような条件式を書いたら意図 と違った結果になってしまいます。
if(x > 5 || y === 3 && isChecked) より優先度の高い演算子 () を使って上書きしましょう。 if((x > 5 || y === 3) && isChecked)
真理値表 - Truth tableとは P Q P∨ Q P∧ Q
¬P P⇒Q ¬P∧ Q P⇔Q 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1
こういう表を真理値表といいます。 基本情報技術者試験でも出てきたような気がします。 複雑な条件式を読んだり書いたりするときに、真理値表を書くと整理しやすいかもしれませ ん。 まあconsoleで実際にコードを書いて出力してみるのが一番早いんですけど… ちなみに世の中にはTruth table generatorという便利なツールがあります。 https://web.stanford.edu/class/cs103/tools/truth-table-tool/
論理学のちょっとおもしろい話 P→Q がPが真、Qが偽のときだけ結果が偽になり、あとはすべて真になるのにお気づきでしょ うか。 Pが偽でも常に結果が真になります。 P Q P⇒Q 0 0
1 0 1 1 1 0 0 1 1 1
さきほどのこちら。 背中をトントンすれば、娘は寝る(真) P:「背中をトントンする」(真) Q:「娘は寝る」(真) 論理演算子を使って P→Q と書ける
Pを 「背中をトントンしない」(偽) としてみたらどうでしょう。 この場合でも、「背中をトントンしないが娘は寝る」というステートメントは 「真」 になり ます。 なぜなら、さきほどの「背中をトントンすれば、娘は寝る」はPが真(背中をトントンする) の場合のことしか決めていないためです。 Pが偽の(背中をトントンしない)場合どうなるかは何も決めていないので、結果はどうあれ
ステートメントには反してないのです (伊藤, 2019, p. 44)。
つまり、以下の奇妙なステートメントは 論理学的には真になります 。 前半のifの部分(P)が偽になるのでQに何が書いてあるかは関係がありません。 以下のP→Q の真理値は真です。 地球は平坦なので、海は凍らない(真) P: 地球は平坦である(偽) Q:
海は凍らない(偽) P → Q (真) 8が素数ならば、円周率の7624番目は8になる(真) P: 8が素数(偽) Q: 円周率の7624番目は8(??調べるのが面倒) P → Q (真) 「円周率の7624番目は8」が真であろうと偽であろうとP→Qは真
論理式はベン図でも表現できます Pがtrue (Wikipedia, 2021b)
Qがtrue (Wikipedia, 2021b)
¬Q (Wikipedia, 2021b)
¬P (Wikipedia, 2021b)
P ∧ Q (conjunction) (Wikipedia, 2021b)
P∨ Q (disjunction) (Wikipedia, 2021b)
P→Q (implication) (Wikipedia, 2021b)
P⇔Q (biconditional) (Wikipedia, 2021b) わけがわからなくなったらベン図を書けば、シンプルな条件文に書き換えられるかもしれな いですね。
ドモルガンの法則 ¬(P∨Q)=(¬P)∧(¬Q) ¬(P∧Q)=(¬P)∨(¬Q) (伊藤, 2019, p. 45) これも基本情報技術者試験や高校の数学1で出てきた気がしますね。 真理値表やベン図を書けば、両辺が一致することは簡単にわかります。
¬(P ∨ Q) = (¬P) ∧ (¬Q) if(x !== 5
&& !y ) ↓ if(!(x === 5 || y))
¬(P∧Q) = (¬P) ∧ (¬Q) if(x !== 5 || !y
) ↓ if(!(x === 5 && y)) これを覚えておけば、複雑で分かりづらい条件式も少しリファクタできるかもしれません。
命題論理式における様々な性質 他にも様々な性質があります
排中律(excluded-middle law) P V ¬P = 1 P ∧ ¬P
= 0 冪等律 (idempotence law) P ∨ P = P P ∧ P = P
交換律(commutative law) P ∨ Q = Q ∨ P P
∧ Q = Q ∧ P P ∨ Q = Q ∨ P P ∧ Q = Q ∧ P 結合律(associative law) P ∨ (Q ∨ R) = (P ∨ Q) ∨ R P ∧ (Q ∧ R) = (P ∧ Q) ∧ R P ∨ (Q ∨ R) = (P ∨ Q) ∨ R P ∧ (Q ∧ R) = (P ∧ Q) ∧ R (伊藤, 2019, p. 45) ここらへんまでは「そりゃそうですね」って感じですね
分配律(distributive law) P ∨ (Q ∧ R) = (P ∨
Q)∧ (P ∨ R) P ∧ (Q ∨ R) = (P ∧ Q)∨ (P ∧ R) P ∨ (Q ∧ R) = (P ∨ Q)∧(P ∨ R) P ∧ (Q ∨ R) = (P ∧ Q)∨(P ∧ R) 吸収律(absorption law) P ∨ (P ∧ Q) = P P ∧ (P ∨ Q) = P P ∨ (P ∧ Q) = P P ∧ (P ∨ Q) = P (伊藤, 2019, p. 45) この分配律と吸収律は覚えておくと役立つかもしれません。
まとめ 0と1を扱う論理学は離散数学の基礎 論理は科学的思考の基礎となる重要な概念。 計算機も0と1の2つの信号を扱うことから、離散数学の守備範囲。 ステートメントは真または偽を表わす文。 論理演算子を使用してmolecular ステートメントを作成できる。 真理値表やベン図で論理演算の結果を整理できる ド・モルガンの定理など論理式の様々な性質を知っていたら業務でも役立つかもしれな い
参考文献 Levin, O. (2019). Discrete mathematics: An open introduction (3
edition). CreateSpace Independent Publishing Platform. http://discrete.openmathbooks.org/dmoi3.html Mozilla and individual contributors. (2021). 式と演算子. MDN Web Docs. https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Expressions_and_Operat ors Stanford University. (n.d.). Stanford Introduction to Logic. http://intrologic.stanford.edu/glossary/operator_precedence.html 伊藤大雄 (2019) イラストで学ぶ離散数学 講談社 ジョージ・ブール (2021a, May 24) In Wikipedia. https://ja.wikipedia.org/wiki/ジョー ジ・ブール 論理演算 (2021b, Mar 18) In Wikipedia. https://ja.wikipedia.org/wiki/論理演算