Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
磯野家で学ぶ Prolog
Search
ckazu
June 06, 2018
Programming
36
0
Share
磯野家で学ぶ Prolog
ckazu
June 06, 2018
More Decks by ckazu
See All by ckazu
2024 コーディング研修
ckazu
2
1.8k
Introduction fasttext
ckazu
0
29
Query selecterの話
ckazu
0
26
仮想電子工作のすすめ
ckazu
0
50
ウェブエンジニアのための色の話
ckazu
0
26
これさえ読めば知ったかできるかもしれない人工知能の歴史と機械学習の今
ckazu
0
28
Shinjuku.html5.lunch #11
ckazu
0
39
typo の傾向と対策
ckazu
0
34
ずぶの素人がRails開発できるようになるために必要な5つのこと
ckazu
0
39
Other Decks in Programming
See All in Programming
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
180
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
24
14k
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.4k
The Less-Told Story of Socket Timeouts
coe401_
3
430
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
970
Claude Codeをカスタムして自分だけのClaude Codeを作ろう
terisuke
0
140
「Linuxサーバー構築標準教科書」を読んでみた #ツナギメオフライン.7
akase244
0
1.4k
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
3
280
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
3
330
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
120
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
3
520
Featured
See All Featured
How to make the Groovebox
asonas
2
2.1k
Docker and Python
trallard
47
3.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
200
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
530
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
170
The World Runs on Bad Software
bkeepers
PRO
72
12k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
220
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
440
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
磯野家で学ぶ Prolog
About Prolog PROgramming in LOGic 論理プログラミング言語 初期の人工知能研究。 1972年フランス発 一階述語論理の表現 P
⇒ Q 最近だと、 IBM watson Softbank pepper 論理憲法
prolog の基本 事実 (facts) を記述し、 規則 (rules) を定義し、 質問 (queries)
をする
install http://swi-prolog.org $ brew install swi-prolog インタプリタの起動 $ swipl <FILENAME>
終了 ?- halt. ファイルの再読込 ?- reload.
None
事実(facts) 親子関係を列挙してみる $ vi sazae-san.pl parent(波平, サザエ). parent(波平, カツオ). parent(波平,
ワカメ). parent(フネ, サザエ). parent(フネ, カツオ). parent(サザエ, タラ). parent(マスオ, タラ).
質問(queries) ファイルを読み込んでインタプリタを起動する $ swipl sazae-san.pl ?- parent(波平, サザエ). ?- parent(波平,
タラ). ?- parent(サザエ, X). ?- parent(波平, X). ?- parent(カツオ, X). ?- parent(X, タラ).
規則(rules) タラちゃんのおじいちゃん(おばあちゃん)は誰?
規則(rules) タラちゃんのおじいちゃん(おばあちゃん)は誰? ?- parent(X, Y), parent(Y, タラ).
規則(rules) タラちゃんのおじいちゃん(おばあちゃん)は誰? ?- parent(X, Y), parent(Y, タラ). :- (ならば)
規則(rules) タラちゃんのおじいちゃん(おばあちゃん)は誰? ?- parent(X, Y), parent(Y, タラ). :- (ならば) grandparent(X,Z):-
parent(X,Y), parent(Y,Z).
規則(rules) タラちゃんのおじいちゃん(おばあちゃん)は誰? ?- parent(X, Y), parent(Y, タラ). :- (ならば) grandparent(X,Z):-
parent(X,Y), parent(Y,Z). ?- grandparent(X, タラ).
父親と母親を 区別する 事実として性別を列挙する male(波平). male(カツオ). male(タラ). male(マスオ). female(フネ). female(ワカメ). female(サザエ).
?- male(カツオ). ?- female(カツオ). ?- femaile(X).
父親と母親を 区別する father(X, Y):- parent(X, Y), male(X). mother(X, Y):- parent(X,
Y), female(X). ?- parent(X, タラ). ?- mother(X, タラ).
祖父母を定義する
祖父母を定義する grandfather(X, Z):- grandparent(X, Z), male(X). grandmother(X, Z):- grandparent(X, Z),
female(X).
None
ノリスケとカツオの関係 は?
ノリスケとカツオの関係 は? male(波平の父). female(波平の母). parent(波平の父, 波平). parent(波平の父, 海平). parent(波平の父, なぎえ).
parent(波平の母, 波平). parent(波平の母, 海平). parent(波平の母, なぎえ). parent(なぎえ, ノリスケ). parent(ノリスケ, イクラ).
ノリスケとカツオの関係 は? いとこ(X, Y):- parent(A, X), parent(B, Y), sibling(A, B).
はとこ(X, Y):- grandparent(A, X), grandparent(B, Y), sibling(A, B).
宿題 夫婦関係を知るには? 子供がいることを知るには? 娘、息子の定義 離婚している場合 家族の定義 n 等親を知るには? リスト表現を使ってみる 兄弟,
姉妹の生まれ順
https://gist.github.com/ckazu/06697521ab2baee813 44bda1904daee9