情報実習II

数理論理学
第5回
解釈
© 加藤,高田,新出
3.2 述語論理の
意味論 (p.55)
演習問題4
何代先であっても、直系の女性先祖を判
定できる確定節、fAncestor を定義せよ。
parent(kotake, sumire).
fAncestor(X,Y) :- …
fAncestor(X,Y) :- …
?- fAncestor(X, tomohiro).
X = sakiko ;
motherと fAncestor
X = sumire ;
X = kotake;
以外の述語を使用し
maruko, hiroshi, tomozou に た場合は0点
対しては false.
演習問題4
何代先であっても、直系の女性先祖を判
定できる確定節、fAncestor を定義せよ。
fAncestor(X,Y) :- mother(X,Y).
fAncestor(X,Y) :- mother(X, Z),
fAncestor(Z, Y).
motherと fAncestor
以外の述語を使用し
た場合は0点
3.2 述語論理の意味論 (p.55)
1. 述語記号 parent, male, female, etc.
2. 関数記号 f, g, etc.
3. 定数記号 tomozou,maruko, etc.
4. 変数
x,y,z, etc. (prolog では変数
は必ず大文字にする)
これらはあくまでも記号の定義であり、こ
れらの記号自体には意味はない
意味を持たせるものが解釈
E  x( human ( x)  mortal ( x))
 human(a )  mortal (a ) (p. 63)
human(a ).
mortal ( x) : human( x).
? mortal (a ).
true
知識の形式的表現と、それを用いた自動
推論のための仕組みの理解を目指す。
3.2.2 解釈
定義 3.17
論理式や、関数に意味を
与えるもの。 (p. 61)
解釈
I ( D ,A )
対象領域 割り当て
Dの例
定義3.14
定義3.15
D  {tomozou , kotake, hiroshi, sumire,
sakiko, maruko}
割り当て
述語記号に対しては、D  {, T}
m
の関数を割り当てる。
Aの例 : D  {tomozou, kotake,}, m  2
A ( parent )(tomozou, hiroshi )  T (真)
A ( parent )(tomozou, maruko)  (偽)

割り当て
D = {tomozou, kotake, hiroshi… }
A (elder)(tomozou, hiroshi) = tomozou
A (elder)(maruko, sakiko) = sakiko
さくら家における解釈を I ( D ,A )
sakura
sakura
とする。ただし
Dsakura  {tomozou, kotake, hiroshi, sumire, sakiko, maruko}
Asakura とは、さくら家における述語記号や関数記号の割り当て
Asakura ( parent ) 表
tomozou
kotake
hiroshi
…
maruko
tomozou
⊥
⊥
T
…
⊥
kotake
⊥
⊥
T
…
⊥
hiroshi
⊥
⊥
⊥
…
T
…
…
…
…
…
…
maruko
⊥
⊥
⊥
…
⊥
さくら家における解釈を I ( D ,A )
sakura
sakura
とする。ただし
Dsakura  {tomozou, kotake, hiroshi, sumire, sakiko, maruko}
Asakura とは、さくら家における述語記号や関数記号の割り当て
Asakura (elder ) 表
hiroshi
…
maruko
tomozou tomozou tomozou tomozou
…
tomozou
tomozou
kotake
kotake
tomozou
kotake
kotake
…
kotake
hiroshi
tomozou
kotake
hiroshi
…
hiroshi
…
…
…
…
…
…
maruko
tomozou
kotake
hiroshi
…
maruko
解釈には、様々なものが考えられる
梅田家の家系図
hiroshi
kotake
sumire
tomozou
maruko
sakiko
梅田家における解釈を I ( Dumeda ,Aumeda )
とする。ただし
Dumeda  {tomozou, kotake, hiroshi, sumire, sakiko, maruko}
Aumeda とは、梅田家における述語記号や関数記号の割り当て
Asakura ( parent ) 表
tomozou
kotake
hiroshi
…
maruko
tomozou
⊥
⊥
⊥
…
⊥
kotake
T
⊥
⊥
…
⊥
hiroshi
T
⊥
⊥
…
⊥
…
…
…
…
…
…
maruko
⊥
⊥
⊥
…
⊥
梅田家における解釈を I ( Dumeda ,Aumeda )
とする。ただし
Dumeda  {tomozou, kotake, hiroshi, sumire, sakiko, maruko}
Aumeda とは、梅田家における述語記号や関数記号の割り当て
Aumeda (elder ) 表
tomozou
kotake
hiroshi
…
maruko
tomozou tomozou
kotake
hiroshi
…
tomozou
kotake
kotake
kotake
hiroshi
…
kotake
hiroshi
hiroshi
hiroshi
hiroshi
…
hiroshi
…
…
…
…
…
…
maruko
tomozou
kotake
hiroshi
…
maruko
E  (x( human ( x)  mortal ( x)))
 human(c)  mortal (c) p.63
I ({nello , patrasche},A )
A (human)(nello)  T
D
A (human)( patrasche) 
A (mortal )(nello)  T
A (mortal )( patrasche)  T
A (c)  nello
I ( D ,A ) の用い方
(pp. 63-64)
F  (x( human ( x)  mortal ( x)))
 human(c)  mortal (c)
I ({nello , patrasche},A )
この解釈 I の元で、論理式Fが
真になること、つまり
I (F )  T
を示す。
F  (x( human ( x)  mortal ( x)))
 human(c)  mortal (c)
E1
⊃
E2
(p.62) 5.
 I ( E1 )  T かつ I ( E2 ) 
I (F )  
T その他の場合
E1  (x( human ( x)  mortal ( x)))
E11
 human(c)
E12
(p.62) 3.
T I ( E11 )  T かつ I ( E12 )  T
I ( E1 )  
 その他の場合
I ((x( human ( x)  mortal ( x))))
の値は、 p.62 6. によると、
I (human (nello)  mortal (nello))と
I (human ( patrasche)  mortal ( patrasche))
の値に依存する。まずnelloの場合を調べる
I (human (nello)  mortal (nello))
 I (human (nello))  T


かつ I (mortal (nello)) 
T その他の場合
p.62 5.

E  (x( human ( x)  mortal ( x)))
 human(c)  mortal (c)
I ({nello , patrasche},A )
A (human)(nello)  T
D
A (human)( patrasche) 
A (mortal )(nello)  T
A (mortal )( patrasche)  T
A (c)  nello
I ((x( human ( x)  mortal ( x))))
の値は、 p.62 6. によると、
I (human (nello)  mortal (nello))と
I (human ( patrasche)  mortal ( patrasche))
の値に依存する。まずnelloの場合を調べる
I (human (nello)  mortal (nello))
 I (human (nello))  T


かつ I (mortal (nello)) 
T その他の場合
p.62 5.

I ((x( human ( x)  mortal ( x))))
T
の値は、 p.62 6. によると、
I (human (nello)  mortal (nello))と
I (human ( patrasche)  mortal ( patrasche))
の値に依存する。patrascheの場合
I (human ( patrasche)  mortal ( patrasche))
 I (human ( patrasche))  T


かつ I (mortal ( patrasche)) 
T その他の場合
p.62 5.

E1  (x( human ( x)  mortal ( x)))
E11
A ( E11 )  T
 human(c)
E12
A (human)(c) 
 A ( human)(A (c))
 A ( human)(nello)  T
(p.62) 3.
T I ( E11 )  T かつ I ( E12 )  T
I ( E1 )  
 その他の場合
A ( E1 )  T
F  (x( human ( x)  mortal ( x)))
 human(c)  mortal (c)
E1
A ( E1 )  T
⊃
E
2
A (mortal )(c) 
 A ( mortal )(A (c))
 A ( mortal )(nello)  T
 I ( E1 )  T かつ I ( E2 ) 
I (F )  
T その他の場合
F  (x( human ( x)  mortal ( x)))
 human(c)  mortal (c)
しで F I ({katuo , patrasche},A )
めもが
せ真、 A ( human)(katuo)  T
。に右
なの A ( human)( patrasche)  
る解
A
(
mortal
)(
katuo
)


釈
こ
との A ( mortal )( patrasche)  T
を元
A (c)  katuo
課題5