#	User Manual for Shaky v1.0
#	Copyright (C) 1997, 翹  §(oomori@jaist.ac.jp)

Ϥˡ

  ˡŪƥ Shaky Ͼξ¸˰˽
⥸塼=ȤͤΤȤ˺줿ƥȰۤʤ, ʣΥ⥸塼
=Ȥͤ˴Ťƺޤ.
  Shaky,ǡ١Ȥ, եȥ롼, εҤȤδ֤Υ
ݡȥޥåפޤ. ޤ,ƳеԤʤưŪ˾
ôĤ褦˳ĥäƤޤ. Ȥ
ɽƤ뤿, βäϽ黻ȤƹԤʤȤǤޤ. 
ƥˡŪòƤλѤΤߤʤ餺, ŪˤѲ
ǽǤ.  Ǥ, ˡŪΰˤ, ʣʻִطĻ򵭽Ҥ, 
ΥƥबºݤλξοˤƤޤǽ뤳Ȥ򼨤ޤ.

Ȥ
 1. 󥹥ȡԤ(Install-J򻲾)
 2. ޥɥץץȤshakyΩ夲.
 3. [la].
 4. ui:shell.
	¹Ԥ,
	w> 
	ȤץץȤФΤ, 㤨Ф
	w> load_data(file='sample/sample1').
	w> load_sr_data(file='sample/sample1_sr').
	ޤǤǥǡΥɤλ.
 5. Ʊ
	w> 
	Ƿ̤ɽ.

¹
| ?- ui:shell.
w> load_data(file='sample/sample1').
w> load_sr_data(file='sample/sample1_sr').
w> listing_all.
t0:dangerous(a_obt=taro).
t1:drunken_drive(agt=taro).
t1:dangerous(a_obt=taro).
t2:drunken_drive(agt=taro).
t2:-dangerous(a_obt=taro).
t3:-drunken_drive(agt=taro).
w:time(pre=t2,post=t3,event=e3).
w:time(pre=t1,post=t2,event=e2).
w:time(pre=t0,post=t1,event=e1).
w> listing_sr.
t0 -> t1
t1 -> t2
t2 -> t3
w> X:dangerous(a_obt=taro).
[_20776,[t0,t1]]
yes
w> exit.
good by
yes

ɽ
(situation) : ǤΥꥹ ex. [t0,t1,t2]
ե(infon) : hoge(l1=a1,l2=a2) -> [hoge,[[l1,a1],[l2,a2]],1]
                   -hoge(l1=a1,l2=a2) -> [hoge,[[l1,a1],[l2,a2]],0]
(term) : +ݡȤμ+ե
	ex. t0,t1:hoge(l=a) -> [[t0,t1],[hoge,[[l,a]],1],0]
ݡ(support)μ :  ':' or ':=' or ':>' -> 0,1,2б



󥸥λȤߡ
ޤˤХȥξФϰϤͿ, 
ϰϤ.

% ϰϤȤ ꥹ [First,End,Necessary,Range]
% ɽ.
% First=ǽξ, End=Ǹξ,
% Necessary=ɬɬפʾ, Range=õϰ

㤨Хǡ١

-----------------------------------------------------------------

[fact]
s0,s1:p.
s1,s2:q.
[rule]
X:r <- X:p,X,q.

[ǰ]
    s0  s1  s2
p   -------
q      --------

-----------------------------------------------------------------

Ȥ  X:rФ
ޤXϰϤ[nil,nil,[],[s0,s1,s2]]˥åȤ.
줫ruleΥ֥X:pX:qϰϤϤ, 줾Υ֥
. 
 X:pФƤ Xϰ=[s0,s1,[],[s0,s1]]
 X:qФƤ Xϰ=[s1,s2,[],[s1,s2]]
. 2ĤXϰϤmerge [s1,s1,[s1],[s1]]
Ȥʤ, X=[s1]Ȥʤ.

utility.pl :¾桼ƥƥ
	ƽҸϥȤˤĤƤ̤Ư


κ

1. 롼뤪ӻ¤򵭽Ҥե롥

2. Ǥоΰ褪Ӿ̤ͥʤɤ򵭽Ҥե롥

()ܥƥ뤿ˤϡĤΥեʤ
ʤʤ

3. ꤬顤ƥǥɤ롥

4. 顼ȯ顤3.롥


㤽¾Υޥɡ
init_db.  ɤץ򥯥ꥢ롥

exit.     ƥλ롥



ʲ򣴤ļ㣳ˤĤƤϥƥब̤ΰ
顼ȯ롥


㣱.־Сåפ꣱(۵Ȳ)

ե̾sample1

c0::S2:X<-S1:X|meet(pre=S1,post=S2).
c1::w:emergency_evacuation(a_obt=S:illegal_action(agt=X))<-
	S:drunken_drive(agt=X),
	T:dangerous(a_obt=X)
	| subset(sub=S,super=T).

c1::w:superfluous_evacuation(a_obt=S:illegal_action(agt=X))<-
	S:drunken_drive(agt=X),
	w:emergency_evacuation(a_obt=T:illegal_action(agt=X)),
	w:-emergency_evacuation(a_obt=U:illegal_action(agt=X))
	| meet(pre=T,post=U), union(s1=T,s2=U,s3=S).

c1::S:illegal_action(agt=X)<-S:drunken_drive(agt=X).

t0,t1:dangerous(a_obt=taro).
t2:-dangerous(a_obt=taro).
t1,t2:drunken_drive(agt=taro).
t3:-drunken_drive(agt=taro).


ե̾sample1_sr

domain(dom=[t0,t1,t2,t3,e1,e2,e3]).

link(from=t0,to=t1).
link(from=t1,to=t2).
link(from=t2,to=t3).

time(pre=t0,post=t1,event=e1).
time(pre=t1,post=t2,event=e2).
time(pre=t2,post=t3,event=e3).

str(order=[c1,c0]).



[]

X:dangerous(a_obt=taro).
Ϻδʾϡ

㣲.־Сåפꣲ

ե̾sample2

c1::S:illegal_action(agt=X)<-
	S:gambling(agt=X),
        S:young_man(a_obt=X).

c0::S:illegal_action(agt=X)<-
        S:gambling(agt=X),
        S:student(a_obt=X).

t0:young_man(a_obt=taro).
t0,t1:student(a_obt=taro).
t1,t2:adult_man(a_obt=taro).
t1,t2:gambling(agt=taro).
t0:young_man(a_obt=jiro).
t1,t2:adult_man(a_obt=jiro).
t1,t2:gambling(agt=jiro).


ե̾sample2_sr

domain(dom=[t0,t1,t2]).

link(from=t0,to=t1).
link(from=t1,to=t2).

str(order=[c0,c1]).




[]
t0ˤϺ̤ǯǤ롥
t0,t1ˤϺϳǤ롥
t1,t2ˤϺͤǤ롥
t1,t2Ϻϥ֥򤷤
t0ˤƼϺ̤ǯǤ롥
t1,t2ˤƼϺͤǤ롥
t1,t2˼Ϻϥ֥򤷤

[롼]
̤ǯ֥뤹Ȱˡ԰٤Ǥ롥
֥뤹Ȱˡ԰٤Ǥ롥

[]

X:illegal_action(agt=taro).
X:illegal_action(agt=jiro).

Ϻˡ԰٤򤷤Ƥϡ
Ϻˡ԰٤򤷤Ƥϡ


㣳.(¸Ū)

ե̾sample3

c0::S1:>alive(a_obt=X)<-
	S2:>see(agt=X,a_obt=Y)
	| subset(sub=S2,super=S1).

tokyo:>see(agt=taro,a_obt=hanako).
chiba:>see(agt=taro,a_obt=jiro).
kanagawa:>-see(agt=taro,a_obt=hanako).


ե̾sample3_sr

domain(dom=[tokyo,chiba,kanagawa]).

str(order=[c0]).




[롼]
S2XY򸫤ʤСYϾS2ޤS1Ƥ

[]
ϺϡǲֻҤ򸫤
ϺϡդǼϺ򸫤
ϺϡǲֻҤ򸫤ʤä

[]
ϺϡǲֻҤ򸫤


㣴.Ū

ե̾sample4

shinjuku:=exist(agt=kouban,number=100).
shibuya:=exist(agt=kouban,number=70).
ikebukuro:=exist(agt=kouban,number=80).


ե̾sample4_sr

domain(dom=[shinjuku,ikebukuro,shibuya]).

str(order=[]).



[]
ɤ˸֤սꤢ롥
ë˸֤սꤢ롥
ޤ˸֤սꤢ롥

[]
Ԥ˸֤սꤢ뤫

