%!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: lparse.dvi %%Pages: 99 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -o lparse-06.04.2001.ps lparse.dvi %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2001.06.04:1857 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: pstricks.pro %! % PostScript prologue for pstricks.tex. % Version 97 patch 3, 98/06/01 % For distribution, see pstricks.tex. % /tx@Dict 200 dict def tx@Dict begin /ADict 25 dict def /CM { matrix currentmatrix } bind def /SLW /setlinewidth load def /CLW /currentlinewidth load def /CP /currentpoint load def /ED { exch def } bind def /L /lineto load def /T /translate load def /TMatrix { } def /RAngle { 0 } def /Atan { /atan load stopped { pop pop 0 } if } def /Div { dup 0 eq { pop } { div } ifelse } def /NET { neg exch neg exch T } def /Pyth { dup mul exch dup mul add sqrt } def /PtoC { 2 copy cos mul 3 1 roll sin mul } def /PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def /PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } /pathforall load stopped { pop pop pop pop } if z } def /STP { .996264 dup scale } def /STV { SDict begin normalscale end STP } def /DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul /y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] 0 } ifelse setdash stroke } def /DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt { /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if ] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1 setlinecap stroke } def /LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch 2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 % DG/SR modification begin - Dec. 12, 1997 - Patch 2 %itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a % DG/SR modification end Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict /setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 % DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) % a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } % def a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore pop pop } def % DG/SR modification end /BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg exch 3 index sub exch Atan rotate newpath } def /EndArrow { @mtrx setmatrix CP grestore end } def /Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill grestore } def /Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0 CLW moveto } def /Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2 div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def /RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW 2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0 curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto } def /SD { 0 360 arc fill } def /EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def /Shadow { [ { /moveto load } { /lineto load } { /curveto load } { /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto load } if ] cvx newpath 3 1 roll T exec } def /NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch cvi def } def /NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def /Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def /Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } ifelse { pop } repeat a } def /CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq and { pop pop /n n 1 sub def } if } def /Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto Lineto pop pop closepath } ifelse } def /Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx setmatrix } def % DG modification begin - Jan. 15, 1997 %/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { %pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 %div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 %d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx %setmatrix } def /Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0 d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx % DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) % setmatrix } def setmatrix pop } def % DG/SR modification end /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth def } def /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth def } def /CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def /y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul m mul neg def } def /IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } def /BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def /NC { CC x1 y1 x2 y2 x y curveto } def /EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def /BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def /NAC { x2 y2 x y curveto CC x1 y1 } def /EAC { x2 y2 x y ArrowB curveto pop pop } def /OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def n { NC } repeat EOC } ifelse } def /AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload /Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def /ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } repeat closepath pop pop } ifelse } def /SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def /ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def /SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def /FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix concatmatrix exch findfont exch makefont setfont } def /Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto x1 y1 lineto closepath } def /OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1 y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse /b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath } ifelse } def /Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add /y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse } def /BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def /OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } ifelse } def /ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { 6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def /BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } def /Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def } def /Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 } if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if /dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def } if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def } { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i w add def } repeat grestore gsave n 0 gt % DG/SR modification begin - Nov. 7, 1997 - Patch 1 %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } % DG/SR modification end { 2 setlinecap } ifelse /i y1 def /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g exch t L stroke /i i h add def } repeat grestore } def /ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0 1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c mul neg d } def /Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def /Rot { CP CP translate 3 -1 roll neg rotate NET } def /RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle dup a add ] cvx def } def /RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ] cvx def } def /PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def /PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def /PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def /Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse } def /UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add exch } def /BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible /IfVisible true def } if } { IfVisible { Invisible /IfVisible false def } if } ifelse } def /InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def /Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def /IfVisible true def } def end % END pstricks.pro %%EndProcSet %%BeginProcSet: pst-dots.pro %!PS-Adobe-2.0 %%Title: Dot Font for PSTricks 97 - Version 97, 93/05/07. %%Creator: Timothy Van Zandt %%Creation Date: May 7, 1993 10 dict dup begin /FontType 3 def /FontMatrix [ .001 0 0 .001 0 0 ] def /FontBBox [ 0 0 0 0 ] def /Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for Encoding dup (b) 0 get /Bullet put dup (c) 0 get /Circle put dup (C) 0 get /BoldCircle put dup (u) 0 get /SolidTriangle put dup (t) 0 get /Triangle put dup (T) 0 get /BoldTriangle put dup (r) 0 get /SolidSquare put dup (s) 0 get /Square put dup (S) 0 get /BoldSquare put dup (q) 0 get /SolidPentagon put dup (p) 0 get /Pentagon put (P) 0 get /BoldPentagon put /Metrics 13 dict def Metrics begin /Bullet 1000 def /Circle 1000 def /BoldCircle 1000 def /SolidTriangle 1344 def /Triangle 1344 def /BoldTriangle 1344 def /SolidSquare 886 def /Square 886 def /BoldSquare 886 def /SolidPentagon 1093.2 def /Pentagon 1093.2 def /BoldPentagon 1093.2 def /.notdef 0 def end /BBoxes 13 dict def BBoxes begin /Circle { -550 -550 550 550 } def /BoldCircle /Circle load def /Bullet /Circle load def /Triangle { -571.5 -330 571.5 660 } def /BoldTriangle /Triangle load def /SolidTriangle /Triangle load def /Square { -450 -450 450 450 } def /BoldSquare /Square load def /SolidSquare /Square load def /Pentagon { -546.6 -465 546.6 574.7 } def /BoldPentagon /Pentagon load def /SolidPentagon /Pentagon load def /.notdef { 0 0 0 0 } def end /CharProcs 20 dict def CharProcs begin /Adjust { 2 copy dtransform floor .5 add exch floor .5 add exch idtransform 3 -1 roll div 3 1 roll exch div exch scale } def /CirclePath { 0 0 500 0 360 arc closepath } def /Bullet { 500 500 Adjust CirclePath fill } def /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def /TrianglePath { 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath } def /SolidTriangle { TrianglePath fill } def /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def /SquarePath { -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath } def /SolidSquare { SquarePath fill } def /Square { SquarePath .89 .89 scale SquarePath eofill } def /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def /PentagonPath { -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto 0 574.7 lineto -546.6 177.6 lineto closepath } def /SolidPentagon { PentagonPath fill } def /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def /.notdef { } def end /BuildGlyph { exch begin Metrics 1 index get exec 0 BBoxes 3 index get exec setcachedevice CharProcs begin load exec end end } def /BuildChar { 1 index /Encoding get exch get 1 index /BuildGlyph get exec } bind def end /PSTricksDotFont exch definefont pop % END pst-dots.pro %%EndProcSet %%BeginProcSet: pst-node.pro %! % PostScript prologue for pst-node.tex. % Version 97 patch 1, 97/05/09. % For distribution, see pstricks.tex. % /tx@NodeDict 400 dict def tx@NodeDict begin tx@Dict begin /T /translate load def end /NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def } if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end grestore } def /InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def } def /InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch Sin mul } def } def /GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def } ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx dup Sin mul Cos Div } ifelse } def /InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub /u ED /NodePos { GetRnodePos } def } def /DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup Cos mul exch Sin mul } def /TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul } ifelse } def /InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan sin def /NodePos { TriNodePos } def } def /OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos hh mul Atan dup cos ww mul exch sin hh mul } def /GetCenter { begin X Y NodeMtrx transform CM itransform end } def /XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } { 0 Dist Sin mul } ifelse } ifelse Do } def /GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse } def /AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse } def /GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA AddOffset yA add /yA1 ED xA add /xA1 ED } def /GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB AddOffset yB add /yB1 ED xB add /xB1 ED } def /GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED } ifelse } def /GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED } ifelse } def /InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED /NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def /LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def /LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt { pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop } repeat LPutLine cleartomark } def /BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED /t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3 mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def /HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def } def /HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def /NAngle yyB yyA sub xxB xxA sub Atan def } def /HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def /HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def } ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd } def /VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def } def /VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def /NAngle yyB yyA sub xxB xxA sub Atan def } def /VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def /VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def } ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark VPosEnd } def /HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx def grestore exec /LPutVar /SaveLPutVar load def } def /NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { LPutVar VPutLine } def LPutVar } def /NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop end } def /NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan /AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } ifelse } def /NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines } HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def /NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def /NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2 yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1 tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def /NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def } { /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def /NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def /NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def /NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2 mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3 mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def % DG/SR modification begin - May 9, 1997 - Patch 1 %/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r %r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add %exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 %mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED /NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED % DG/SR modification end } def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r Div def /y ED /x ED } def /NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB 180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def /LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos { xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar tx@Dict begin false Polygon end } def /NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2 mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def /x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0 eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } { x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def 0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos { LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } { t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { LPutPos } def } def /Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos { LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } { pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin /ArrowA { moveto } def /ArrowB { } def false Line closepath end } def /LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg exch X sub neg exch moveto setmatrix CP grestore } def /LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0 def } ifelse LPutCoor } def /HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg } if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop } ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED } def /VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop } ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED } def end % END pst-node.pro %%EndProcSet %%BeginProcSet: finclude.pro %! /fstore{dup dict exch{dup 4 2 roll put}repeat def}bind def/fshow{gsave 72 TeXDict/Resolution get div -72 TeXDict/VResolution get div scale 1 DVImag div dup scale get cvx exec show grestore}bind def %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N /@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X /yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 39158280 55380996 1000 600 600 (lparse.dvi) @start %DVIPSBitmapFont: Fa cmtt12 12 18 /Fa 18 118 df<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B6C8A33>46 D<91391FE00780DAFFFC13C00103EBFF0F010F148F4914FF5B90387FF81F9038FFC00748 497E4848487E497F485A167F485A49143F121F5B003F151F5BA2127F90C8EA0F8093C7FC A25A5AAD7E7EA36DEC0F80003FED1FC0A27F121F7F000F153F6D15806C7E167F6C6CECFF 007F3A01FF8003FE6C6D485A90397FF81FF86DB55A6D5C6D5C010391C7FC010013FCEC1F E02A3F7CBD33>67 D97 DI100 DII104 D<14E0EB03F8A2497EA36D5AA2EB00E091C8FCAA383FFFF8487FA47EEA0001B3AD007FB6 12C0B712E016F0A216E06C15C0243E78BD33>I<383FFFFC487FB5FCA27E7EC7FCB3B3AD 003FB612F84815FCB712FEA26C15FC6C15F8273D7ABC33>108 D<02FC137E3B7FC3FF01 FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07130301FC01FE7F9039 F803FC01A201F013F8A401E013F0B3A53C7FFE0FFF07FF80B548018F13C0A46C486C0107 1380322C80AB33>I<4AB4FC263FFC0713C0267FFE1F13F000FF017F7F91B5FC6CB67E6C EC07FEC6EBF801ECF0004A7F4A7F5CA291C7FCA35BB3A43B3FFFF80FFFFC486D4813FEB5 6C4813FFA26C496C13FE6C496C13FC302C7FAB33>III114 D<90381FFE0F90B5EA8F80000314FF12 0F5A5AEBF007387F800190C7FC00FE147F5A153FA37E007FEC1F0001C090C7FCEA3FF8EB FFC06C13FF6C14E0000314F8C680011F13FF01001480020713C0EC007FED1FE0007C140F 00FEEC07F01503A27EA27F15076D14E06D130F6DEB3FC09038FE01FF90B61280160000FD 5C00FC14F8D8F83F13E0D8780790C7FC242E79AC33>III E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fb cmr5 5 1 /Fb 1 50 df<1360EA01E0120F12FF12F11201B3A3387FFF80A2111C7B9B1C>49 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fc cmsy8 8 1 /Fc 1 21 df20 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fd msbm10 10 1 /Fd 1 51 df<0118ED01C0013C15031707170FEF1F801800173E177E5F4C5A4C5A5F4C5A 160F4C5A4CC7FC167E5E013FB7128018C0A2188090273C000FC0C7FC4B5A4BC8FC153E5D 15FC4A5A4A5A4A5A4A5A5D4AC9FC5C147E013FB7128018C0A2188002E0C9FC5C5C91CAFC 137E137C13FC120112031207120FEA1FBC133C123E127E12FC12F8EA7018323A85B933> 50 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fe cmmi5 5 2 /Fe 2 106 df77 D<137013F8A213F013E01300A6EA0F80EA1FC0EA31E01261A2EAC3C01203EA0780A3 EA0F001308EA1E18A213301370EA0FE0EA07800D1D7D9C16>105 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff cmex10 10 4 /Ff 4 89 df56 D58 D60 D88 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fg cmsy7 7 3 /Fg 3 51 df<12E012F812FEEA3F80EA0FE0EA03F8EA00FEEB3F80EB0FE0EB03F8EB00FE EC3F80EC0FE0EC03F8EC00FEED3F80ED0FE0ED03F8ED00FE163E16FEED03F8ED0FE0ED3F 80EDFE00EC03F8EC0FE0EC3F8002FEC7FCEB03F8EB0FE0EB3F8001FEC8FCEA03F8EA0FE0 EA3F80007EC9FC12F812E0CAFCAB007FB612FCB712FEA227357AA734>21 D<13E0EA01F0EA03F8A3EA07F0A313E0A2120F13C0A3EA1F80A21300A25A123EA35AA312 7812F8A25A12100D1E7D9F13>48 D<49B5FC130F133F01FFC7FCEA01F8EA03E0EA078048 C8FC121E121C123C123812781270A212F05AA2B7FCA300E0C8FCA27E1270A21278123812 3C121C121E7E6C7EEA03E0EA01F86CB4FC013FB5FC130F130120277AA12D>50 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fh cmbx12 12 54 /Fh 54 122 df12 D39 D45 DI< EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3ADB712FCA5264177C038>49 DII<163FA25E5E5D5DA25D5D5D5D A25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14F8EB01F0EB03E013 0714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E5A12FCB91280A5C8 000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01FFEB07FF91B6FC5E 5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01C714C001DF14F090 39FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0C8FC6F13F0A317F8 A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0123E003F4A1380D8 1FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F01FCC7FC010113C0 2D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F8090390FFC001FD93F F014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0EE7F80EE1E00003F 92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039F9F01FFC9039FBC0 07FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA4127FA5123FA217F07F 121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C9038E01FFC6DB55A01 1F5C010714C0010191C7FC9038003FF02D427BC038>I<121E121F13FC90B712FEA45A17 FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E00785D15014B5A00F84A5A48 4A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143FA2147F5D14FFA25B A35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>I I<903807FFC0013F13FC48B612804815E0260FF80013F0D81FC0EB3FF848C7EA1FFC4815 FE01C0130F486C14FF7FA66C485B6C4814FE000FC7FCC8EA3FFCED7FF8EDFFF04A13E04A 13801600EC07FC4A5A5D4A5A5D4A5A92C7FCA2147E147CA31478AA91C8FCA814F8EB03FE 497E497FA2497FA56D5BA26D90C7FC6D5AEB00F828467AC535>63 D65 DIII< BA12F8A485D8001F90C71201EF003F180F180318011800A2197E193EA3191EA21778A285 A405F890C7FCA316011603161F92B5FCA5ED001F160316011600A2F101E01778A2F103C0 A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807181F4DB5FCBBFC61A44344 7DC34A>II72 DI76 DII80 D82 DI<003FBA12E0A59026FE000FEB 8003D87FE09338003FF049171F90C71607A2007E1803007C1801A300781800A400F819F8 481978A5C81700B3B3A20107B8FCA545437CC24E>II87 D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7E A26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC0100 0313E0000F1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013E EBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 DIIIIIII<137C48 B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFF A512037EB3AFB6FCA518467CC520>IIII<90277F 8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E4880913D87F01FFC 0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D 02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F 8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F000390399F000FFE 6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314E002CF14 F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0 A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E49 5A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E >I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14 F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E>114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C7121F127E00FE 140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C800003806C15 806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C06C141FA2 6DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7CAD2C >IIIIIII E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fi msam10 10 2 /Fi 2 78 df<14034A7E4A7E4A7EA24A7EA2EC7CF8ECFCFCECF87C49487E0103133F4A7E 49486C7EA249486C7E011F80EC0003013E6D7E017E80017C130049147CA2484880000315 3F49804848EC0F80000F16C049140748C8EA03E0A2003EED01F0007E16F8007C15004816 7CA3007C16F8007E1501003E16F06CED03E0A26C6CEC07C06D140F000716806C6CEC1F00 6D5C0001153E6C6C5CA2017C5C017E1301013E5C6D495AEC8007010F5C6D6C485AA26D6C 48C7FC6E5A0101133E6D6C5AECFCFCEC7CF8EC3FF0A26E5AA26E5A6E5A6EC8FC2E477CBB 37>6 D<14074A7EA24A7EA24A7EA2143DEC7DF0A2ECF8F8A2903801F07CA249487EA2EC C01E0107131FA249486C7EA249486C7EA2013E6D7EA2496D7EA20178130001F880A24848 147CA2484880A2484880A24980000F1680A248C8EA07C0A2003EED03E0A248ED01F0A248 ED00F8B8FCA36C16F02D3279AF3C>77 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fj cmti8 8 4 /Fj 4 117 df97 D<130E131FEB3F80A2EB1F00130E90C7FCA9EA03E0EA0FF0EA1E78EA1C7C123812781270 13FCEAF0F812E012E1EAC1F0120112035B12075BA2120F13831387121F13075BEA3F0E12 3EEA1E1C133C1338EA0FF0EA03C0112E7AAC16>105 D<137CEA0FFCA21200A213F8A212 01A213F0A21203A213E0A21207A213C0A2120FA21380A2121FA21300A25AA2123EA2127E A2127CA2EAFC30137012F8A213F013E012F012F113C012FBEA7F80EA1E000E2F7AAD12> 108 D<131C133EA2137EA2137CA213FCA25BA21201A2B512E0A23803F000A25BA21207A2 5BA2120FA25BA2121FA290C7FCA24813C01301123E130314801307003C1300130E131E6C 5AEA0FF0EA07C0132B7AA918>116 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fk cmmi7 7 15 /Fk 15 118 df61 D<013FB512FC16FF903A01FC001FC04AEB03E0EE01F801031400177C4A80A201 0781A25CA2130F18805CA2011F1600A24A5CA2133F173E91C8127E177C4915FC5F017E14 015F01FE4A5AA2494A5A4C5A00014BC7FC167C495CED03E00003EC1FC0B600FEC8FC15F0 31287DA736>68 D77 D<013FB512F816FF903A01FC001FC04AEB07E0 EE01F0010315F816005CA2130716015CA2010FEC03F0A24AEB07E0EE0FC0011FEC1F80EE 3E0091388001FC91B512E093C7FCD93F80C8FC91C9FCA35B137EA313FE5BA312015BA212 03B512C0A22D287DA72A>80 D97 DI102 D<130E131F5BA2133E131C90C7FCA7EA03E0487E EA0C78EA187C1230A212605B12C0A2EA01F0A3485AA2485AA2EBC180EA0F81A2381F0300 A213066C5A131CEA07F06C5A11287DA617>105 D<137CEA0FFCA2EA00F8A21201A213F0 A21203A213E0A21207A213C0A2120FA21380A2121FA21300A25AA2123EA2127EA2EA7C18 A3EAF830A21320EA786013C0EA3F80EA0F000E297EA715>108 D<3B07801FC007E03B0F E07FF01FF83B18F0E0F8783C3B30F1807CE03E903AFB007D801ED860FEEB3F005B49133E 00C14A133E5B1201A24848495BA35F4848485A1830EE01F0A23C0F8003E003E060A218C0 933801E180271F0007C013E3933800FF00000E6D48137C341B7D993B>I<3907801FC039 0FE07FF03918F0E0F83930F1807CEBFB00D860FE133C5B5B00C1147C5B1201A248485BA3 4A5AEA07C01660EC03E0A23A0F8007C0C0A2EDC180913803C300D81F0013C7EC01FE000E EB00F8231B7D9929>II<9038F007C03901FC1FF039031E78780006EBE03C90 381FC01C000CEB801E14005B0018141F133E1200137E153E137CA213FC157C5B15780001 14F0A2EC01E0EC03C03903FC07809038FE1F00EBE7FCEBE1F0D807E0C7FCA25BA2120FA2 5B121FEAFFF8A22025809922>I<131C133EA25BA45BA4485AB512E0A23801F000485AA4 485AA4485AA448C7FC1460A214C0123EEB0180EB0300EA1E06EA1F1CEA0FF8EA03E01326 7EA419>116 DI E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fl cmbxti10 10 16 /Fl 16 122 df97 DII101 D103 D<143C147F495A15805B1500 A25C6D5AEB007091C7FCAB133FEBFFC000037F3807C7F0380F87F8EA1F07A2EA3E0FA212 7C131F5C12FCEAF83F00005B137F5CA213FF5CA25A91C7FC5A5BEC0F801207EBFC1F1500 120F495A143E5C13F000075BEBF1F06CB45AC65B013EC7FC193C79BA1E>105 D108 DIII<01FCEB7F80 3A03FF01FFF04801C713FC3A0F9FEFC0FE3A1F0FFF003F4A13FF003E495A131F4A5A007C 13F0A216FED8FC3FEB01FC00F89038E000F000001500A2137F5CA313FF5CA35A91C8FCA3 5A5BA312075BA35B5BEA01E0282779A52A>114 DI<14F0EB03F8130780495AA3131FA25CA2133FA25CA2137FA2B612 8015C0A21580C6EB8000A25AA291C7FCA25AA25BA21207A25BA2120FA25BA2121FA29038 F007C0A2003F130F1580EBE01F1500143E147EEBC07C6C6C5A380FE3F0EBFFE000031380 C648C7FC1A3778B520>I<133FD9FFC0130F000301F0EB1FC02607E7F8133FD80F83147F 1387381F07FC003E15FFA2D87E0F1580007C5B011F5B00FC13F000F81600EA003F4A5AA2 017F5C14C0150713FF02805BA2150F5A0200EBF83EA2031F137E177C16F0A2033F13F8A2 6C91387FF1F0EC80FF903A7F83F7F3E0903A3FFFC3FFC0010F01811380903A01FC007E00 2F2779A534>I<013F161ED9FFC0011EEB7F80000301F090393F80FFC02607E7F8137FD8 0F83DAFF8113E01387381F07FC003E5C1700D87E0F167F007C01F8153F011F49141F00FC 01F049EB0FC012F8EA003FECE0074C1480137F14C0030F141F01FF4A14001480A2604802 1F143E02005B60A360A2033F495A6C5F9139807FF803017F01FF495A903B3FC1FBFC0F80 90261FFFF1B5C7FC01079038C07FFC01009038000FF03B2779A540>119 D<133FD9FFC0130F000301F0EB1FC02607E7F8133FD80F83147F1387381F07FC003E15FF 1780EA7E0F007C5B011F5B00FC01F0140012F8EA003F4A5A5E137F14C0150701FF5C1480 A2150F485D1400A2151F5EA3153F5E6C147FEC80FFEB7F836DB55A130F903801FC7F90C7 12FF5EEA03C0260FF00190C7FC121F003F495AA24A5A4A5A01E05B49485A9038007F8026 1FC0FFC8FC380FFFFC000313F0C613802A3779A52F>121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fm cmitt10 10 23 /Fm 23 122 df<003FB612804815C0B7FCA27E6C15802206769B2C>45 D97 DII<913803FF804A13C0A380EC001F1680A2153F A21600A25DA2157EEB03F090380FFCFEEB3FFF495B90B5FC3801FE1F3803FC0FD807F85B 380FF00713E0EA1FC001805B123F13005A007E5CA2140F12FE485CA291381FC180EDC7E0 EC3F87A2EC7F8F02FF13C049130F6C5AD87E07EB1F80D87F0F133F6CB612006C13DFEC8F FE3907FE07FC3901F801F0233376B22C>I<147F903803FFC0010F13F0013F13F84913FC EBFFC13801FE004848137E485AD80FE013FE15FC485A383F800190380007F848133F90B5 12F015E01580B5EAFE0014F000FCC8FCA6127E151C007F143E6C6C13FEEBC00F6CB5FC6C 14FC6C14F0000114C039007FFE001F2475A32C>IIII<140FEC1F80EC3FC0A4EC1F80EC0F0091C7FCA8133FEB FFC0000313F05A487FEA1FE1EA3FC11381EA7F01127EEAFE0300FC5B13075C1200130F5C 131FA25C133FEC0060EC01F8137F137EEBFE0301FC13F01407EC0FE0141FEC3FC090B512 806D13005CEB1FF8EB07E01D3475B32C>I108 DI<3901F007F03907F81FFC390FFC7FFE486CB5FC48B6128090383FFE1F 14F8007E13F014E0EB7FC012FE00FC1380140049133FC6481400A348485B157EA24913FE 0003ECFC18167EEBF00115F8000715FE020313FC01E013F015F1000F15F8EDF3F001C013 FF6E13E016C0496C13806CC7EA3E0027247AA32C>I<14FE903807FF80011F13E04913F0 90B5FC48EB83F83903FE01FCEBF800485A4848137E485AA2485A90C7FC5A127EA215FE12 FE4814FCA2140115F81403EC07F0A2EC0FE0007EEB1FC0EC3F80007F13FFD83F8313006C B45A14F86C5B000313C0C648C7FC1F2476A32C>I<903907C00FC090391FF03FF090393F F8FFFCEB7FFD91B57E9039FE7FF87F01FC497ED801F801E01380EDC01FECFF8000031400 495AA2EBF1FCEA00015CA20103143FA24A1400A201075C167E16FE5E010F13014B5A1507 6E485A011F495A6E485A91B55A93C7FC495BEC9FF8EC07E091C9FC5BA2137EA213FEA25B A21201A25BA2387FFFE0A2B57E6C5BA2293680A32C>I114 DII<01F8EB01C0D803FEEB03E0486C13075A48 1380D83F9F130F131F007F15C0127E013F131F00FE130000FC15805B017E133F120001FE 14005B5D120149137EA2EDFE180003157E9038F001FCA2140316FE913807F8FC140F9038 F81FF92601FC3F13F890B6FC6C15F090397FFE7FE090393FF83FC090390FE00F8027247A A32C>I<017E14F03901FF8001000701C013F85A4813E001C714FCD83F8713001307007F 1401007E15F8EAFE0F00FC13C0131FEC8003000015F0133F140015074914E0137EA2ED0F C013FE49131F1680A2ED3F005D017E137E5DEB7F836DB45A6D5B6D5B6D1380D900FEC7FC 26247AA32C>I<003C903803800E003FECC01F267F8007EB3F80123F01C0141F0007130F 1580A3141F000F020013001380A2001F495BD9003E133E5A123E027E137E007E157C007C 137CA202FC13FC00FC5D485B010113015EA20103130300FC01FC5BD87C0713073A7E0FFE 0FC0007FB6FC6C01BF5B6C011F90C7FC6C486C5A3903F803F8292479A32C>I<90391FC0 1F809039FFF07FE0489038F9FFF8000790B5FC4815FCD81FF013F03A3FC07FE07E903980 3FC0FED87F001381007E148300FE140348EC01FC16F891387F00F0C71400147EA214FEA2 5CA201011418001E157E003F5B127F018314FE00FF15FC01031301D8FE07EB03F839FC0F FC073A7E1FFE1FF0007FB612E06C15C0023F1300390FFC1FFE3903F007F027247AA32C> I<017E143848B46C137C486D13FC5A487FD81FC71301D83F8714F81307127FD87E0F1303 00FE01C013F012FC131FEC8007000015E0133F1400150F4914C0137E151FA201FE148049 133FA2157F16005D5CEB7E0390387F0FFE14FF7F7F6D5BEB01FC90C7FC14015DA21403D8 07805B380FC007486C485A4A5AA29038C07F804AC7FCEB83FEEBFFFC6C5B6C13E06C5BC6 48C8FC26367AA32C>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fn cmtt10 6.00006 20 /Fn 20 120 df<387FFFC0B512E0A26C13C013047D901A>45 D<127812FCA41278060676 851A>I<13F8EA03FE487E380F8F80381E03C0A2383C01E0EA3800007813F0A3481378AA 007813F0A3383C01E0A2381E03C0A2380F8F803807FF006C5AEA00F815207E9E1A>48 D<13E0A212011203A2120F127F12FF12791201B3387FFF80A3111F7C9E1A>II<127812FCA412781200A9127812FCA41278061576941A>58 D<137CA213FEA213EEA3EA01EFA313C700031380A5380783C0A313FFA24813E01301A300 1F13F0EA1E00387F83FC38FFC7FE387F83FC171E7F9D1A>65 D<3803F8E0EA0FFF5AEA3E 0FEA7807EAF80312F01301A36CC7FC127C127EEA3FE0EA1FFE380FFF80000313C038003F E0EB03F01301EB00F81478127012F0A36C13F0EAFC0138FF03E0EBFFC0148038E1FE0015 207E9E1A>83 D97 DI100 DI108 D<387CF87C38FFFDFEEA7FFF 381F9FCF381E0F07A2EA1C0EAC397F1F8FC039FF9FCFE0397F1F8FC01B1581941A>I<38 FF1FC0EB7FE0497E380FF0F8EBC0781380A21300AB39FFF1FF8013F313F1191580941A> II<387FC3F838FFCFFE EA7FDF3803FE1EEBF80CEBF000A25BA25BA9387FFF80B5FC7E17157F941A>114 D<380FFB80EA3FFF5AEA780FEAE007A212F000FCC7FCEA7FF0EA3FFCEA0FFF0001138038 000FC0EA7003EAF00112F8130338FE0F80B512005BEAE7F812157C941A>II<38 FF83FE13C7138338380038A26C1370A31338137CA2000C1360380E6CE013EEA313C63807 C7C0A3138317157F941A>119 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fo cmr10 15 12 /Fo 12 120 df<17F04C7EA34C7EA34C7EA34C7EA34C7FA3043D7FA304787FA34C6C7EA2 030180EEE03FA2030380EEC01FA2030780EE800FA2030F804C7EA24B81031E7FA2033E81 033C7FA2037C8103787FA203F8814B147FA20201824B143FA24A4881181FA24A486E7EA3 4AB8FCA34A83021EC81203023E83023C81A2027C83027881A202F8834A167FA20101844A 163FA20103844A161FA2010784190F130F86131FD97FE084D9FFF84C7F000701FE047F13 F0B600E0023FB612F0A454597CD85D>65 D80 D85 D97 D101 D103 D109 DI<913803FF80021F13F091B512FE0103903801FF80 903A07F8003FC0D91FE0EB0FF049486D7E49486D7E49C76C7E48486E7E4848ED7F80A248 48ED3FC0000F17E049151F001F17F0A2003F17F849150FA2007F17FCA400FF17FEAB007F 17FCA36C6CED1FF8A3001F17F06D153F000F17E0A26C6CED7FC0000317806C6CEDFF006C 6C4A5A6D6C495A6D6C495A6D6C495AD90FF8EB3FE0903A03FF01FF800100D9FFFEC7FC02 1F13F00203138037397DB73E>I<90397FC007F0B5EB3FFC4BB4FC9139C1F87F809138C3 E0FF0001D9C7C113C0D8007F1381ECCF01EB3FCE14DE14DCDAFC0013804AEB3E0093C7FC A25CA45CB3AC497EEBFFFCB612FEA42A377DB631>114 DI119 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fp cmtt10 15 9 /Fp 9 116 df<903807FFF0017F13FE48B612C048814815F848818248819026FE003F7F 4901077F15016F7F707E6C48143F6C5AD801C06E7EC9FC160FA4ED03FF0203B5FC147F01 03B6FC131F137F90B7FC120348ECFE0F48EBFE004813E04890C7FC13FC485A13E0485AA2 5BA46D141FA26C6C143F6D147F6DEB01FF6C6C01077F271FFF803F90B5FC91B8FC6C1880 7E6C15FB6C15E16C6C02801400011F9038FC001F010301C090C8FC393979B741>97 D<4BB5FC5D84A58192C7FCADEC0FFC91387FFF8049B512F0010714FC011F804991B5FC5B 90B8FC48EBFC0348EBF00002C0133F48497F4848C77E4980001F815B484880A2484880A2 5BA212FFA25BA87FA2007F5DA27F5E123F7F5E6C6C5C7F6C6C5C6C6C5C6E90B5FC6CEBE0 016CD9F80FECFFC06C90B812E07F6D5C6D5C6D14F00103ECC07F0100020014C0DA1FF890 C8FC3B4D7CCB41>100 DI<003FB512F85AB67EA47E 7EC71207B3B3B3A6003FB812804817C0B912E0A46C17C06C1780334C79CB41>108 DI111 DI114 D<9139FFFC03E0010FEBFFC7017FECFFF048B7FC1207 5A5AA248EB800F397FF8000101E0EB007F4848143F5B90C8121FA46DEC0FE07F6C6C91C7 FC13F86CB4FC6C13F8ECFFE06C14FF000315E06C15FC6C6C80010FECFF80010115C0D900 0714E0DA001F13F0030113F8ED003F003FED1FFC481507486CEC03FEA26D1401A37F1603 7F7F6DEC07FC6D141F6D6CEB7FF89138E003FF91B612F017E017C06D15806DECFE00010F 5CD87E0314E0277C003FFEC7FC2F3977B741>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fq cmtt8 8 15 /Fq 15 120 df40 D<127012FC7E127FEA3FC0121FEA07E07F6C7E6C7E1200137EA27FA27F1480A2130FA214 C0A21307A8130FA21480A2131FA214005BA2137EA25B1201485A485A5BEA1FC0123F48C7 FC12FE5A127012347AAD23>I<397FF07FF0EBF8FFA3EBF07F3907E03F000003133EEBF0 7E0001137CEBF8FC00005B13FDEB7DF0137F6D5AA26D5AA26D5AA280131F80133F80137D EB7CF813F8147CEA01F0801203497E12079038C00F80120F397FE03FF8D8FFF013FCA3D8 7FE013F81E297EA823>88 D<3803FF80000F13E04813F8487F80EB80FFEC3F80381F001F C7FC140F14FF137F0003B5FC120F5A387FF00F130012FCA25A141F7E6C133F387F81FF90 B512FC6C14FE7E000713C73901FE01FC1F1D7D9C23>97 D101 D103 DI<133813FEA5133890C7 FCA6EA7FFC487EA3127FEA003EB3387FFFFEB6FCA36C13FE182A7AA923>I108 D<38FF81FCEBC7FF01DF13C090B512E015F03907FE0FF8EBF8039038F001FCEBE000A249 137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001DF138001CF13 00EBC3F801C0C7FCAAEAFFFEA51F2C7F9C23>112 D<397FF00FE039FFF87FF8ECFFFC13 FB6CB5FCC613F8ECC078EC800091C7FC5BA25BA35BAA387FFFFCB57EA36C5B1E1D7E9C23 >114 D<3801FF9C000F13FE5A127FA2EAFF0000FC137E48133EA26C131C6C1300EA7FF0 383FFF80000F13E06C13F838007FFCEB01FEEB007F0070133F00F8131F7E143F7E38FF80 FFEBFFFE14FC14F814F000701380181D7B9C23>I<137013F8A7007FB51280B612C0A36C 1480D800F8C7FCACEC01C0EC03E0A3EBFC07140F9038FE1FC0EB7FFF158090383FFE00EB 0FFCEB07F01B257EA423>I<39FF807FC001C013E0A400071303B01407140FEBE03F90B6 FC7EA2C613F3EB3FC1201D7F9C23>I<397FF00FFE39FFF81FFFA3397FF00FFE001FC712 F86C14F0A57F390783E1E0EB87F1A3EB8FF90003EB79C013CFA2EBDF7BA2EBDE3B000114 80EBFE3FA2EBFC1FA23900F80F00201D7F9C23>119 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fr cmr8 8 36 /Fr 36 122 df<123C127EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A 5A126009157AAD14>39 D<123C127EB4FCA21380A2127F123D1201A312031300A25A1206 120E5A5A5A126009157A8714>44 DI<123C127E12FFA4127E12 3C08087A8714>I<130C133C137CEA03FC12FFEAFC7C1200B3B113FE387FFFFEA2172C7A AB23>49 D<140EA2141E143EA2147E14FEA2EB01BE1303143E1306130E130C1318133813 30136013E013C0EA0180120313001206120E120C5A123812305A12E0B612FCA2C7EA3E00 A9147F90381FFFFCA21E2D7EAC23>52 D<4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC30 FCA2EC70FEEC607EA24A7EA349486C7EA2010380EC000FA201066D7EA3496D7EA2011FB5 7EA29038180001496D7EA349147EA201E0147F4980A20001ED1F801203000716C0D80FF0 EC3FE0D8FFFC0103B5FCA2302F7EAE35>65 D72 DI78 DI<90383F80303901FFF0703807C07C390F000EF0001E13 074813034813011400127000F01470A315307EA26C1400127E127FEA3FE013FE381FFFE0 6C13FC6C13FF00011480D8003F13E013039038003FF0EC07F81401140015FC157C12C015 3CA37EA215787E6C14706C14F06CEB01E039F78003C039E3F00F0038E07FFE38C00FF01E 2F7CAD27>83 D87 D<13FF000713C0380F01F0381C00F8003F137C 80A2143F001E7FC7FCA4EB07FF137F3801FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14 065AA3143F7E007E137F007FEBEF8C391F83C7FC390FFF03F83901FC01E01F207D9E23> 97 DII<15F814 1FA214011400ACEB0FE0EB7FF83801F81E3803E0073807C003380F8001EA1F0048130012 3E127EA25AA9127C127EA2003E13017EEB8003000F13073903E00EFC3A01F03CFFC03800 7FF090391FC0F800222F7EAD27>III<013F13F89038FFC3FE3903E1FF1E3807807C000F140C391F003E00 A2003E7FA76C133EA26C6C5A00071378380FE1F0380CFFC0D81C3FC7FC90C8FCA3121E12 1F380FFFF814FF6C14C04814F0391E0007F848130048147C12F848143CA46C147C007C14 F86CEB01F06CEB03E03907E01F803901FFFE0038003FF01F2D7E9D23>III107 DI<2607C07FEB07F03B FFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F803B07DC00F9C00F01F8D9FF8013C049 90387F000749137EA249137CB2486C01FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C>I< 3807C0FE39FFC3FF809038C703E0390FDE01F0EA07F8496C7EA25BA25BB2486C487E3AFF FE1FFFC0A2221E7E9D27>II<3807C0FE39FFC7FF80 9038CF03E0390FDC01F03907F800FC49137E49133E49133FED1F80A3ED0FC0A8151F1680 A2ED3F00A26D137E6D137C5D9038FC01F09038CE07E09038C7FF80D9C1FCC7FC01C0C8FC A9487EEAFFFEA2222B7E9D27>I<90380FE01890387FF8383801F81C3903E00E783807C0 07390F8003F8001F1301EA3F00A2007E1300A212FE5AA8127EA36C13017EEB8003380FC0 073803E00E3801F03C38007FF0EB1FC090C7FCA94A7E91381FFFC0A2222B7E9D25>I<38 0781F838FF87FEEB8E3FEA0F9CEA07B813B0EBF01EEBE000A45BB0487EB5FCA2181E7E9D 1C>I<3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA7FF0 6CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C133CA2 6C137838FF01F038E3FFC000C0130017207E9E1C>I<1360A413E0A312011203A2120712 1FB512F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A7FA81B >II<3BFFFC3FFE07FFA23B0FE003F001F801 C09038E000F00007010114E0812603E00314C0A2913807F8012701F006781380A29039F8 0E7C030000D90C3C1300A290397C181E06A2151F6D486C5AA2168C90391F600798A216D8 90390FC003F0A36D486C5AA36DC75A301E7F9C33>119 D<3AFFFC07FF80A23A0FF003FC 000003EB01F0000114C06D485A000091C7FCEB7C06EB3E0E6D5A14B8EB0FB0EB07E01303 6D7E497E1307EB067C497EEB1C1F01387FEB700F496C7E6E7ED803C07F00076D7E391FE0 03FC3AFFF007FFC0A2221D7F9C25>I<3AFFFC01FFC0A23A0FE0007E000007147C153800 0314306D137000011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2EB1F06A2148E EB0F8CA2EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC06A25B131CEA 7838EA7070EA3FE0EA0F80222B7F9C25>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fs cmr6 6 3 /Fs 3 52 df<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>49 DI<13FF000313C0380F03E0381C00F014F800 3E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00 F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFF C00001130018227DA01E>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ft cmr7 7 6 /Ft 6 53 df<140EB3A2B812E0A3C7000EC8FCB3A22B2B7DA333>43 D48 D<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521 >I<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC 15005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA0180390300 030012065A001FB5FC5A485BB5FCA219267DA521>I<13FF000313E0380F01F8381C007C 0030137E003C133E007E133FA4123CC7123E147E147C5C495AEB07E03801FF8091C7FC38 0001E06D7E147C80143F801580A21238127C12FEA21500485B0078133E00705B6C5B381F 01F03807FFC0C690C7FC19277DA521>I<1438A2147814F81301A2130313071306130C13 1C131813301370136013C012011380EA03005A120E120C121C5A12305A12E0B612E0A2C7 EAF800A7497E90383FFFE0A21B277EA621>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fu cmss10 10 13 /Fu 13 122 df97 D101 D<14FF010713C05B5B5BEB7F819038FE0040491300485AA21203 ACB512FCA5D803F8C7FCB3AE1A3B7FBA19>I<12FEB3A3EC03FE4A5A4A5A4A5A4A5A4A5A 4A5A4990C7FC495A5C495A495A495A495A495A497EB57EA280EBF7F813E3EBC1FCEB80FE 497E487F6E7E81141F6E7E8114076E7E6E7E811400157F1680213A7AB929>107 D<12FEB3B3B3A4073A7AB914>I110 DI<14F0EAFC07130F133F137F13FF00FD130013FCEAFF F05B5BA25B90C7FCA35AB3A414267AA51C>114 DII<00FEEB 01FCB3AA1403A214076C131F387F807F90B5FC6C13F914F1000F13C1D803FCC7FC1E267A A42B>I<00FED901FEEB01FC007F17F802031403A2018013DF003FEE07F01407ED9F80D8 1FC016E0020F140F158FD80FE002C013C0030F131F141FED07E0D807F01680021E143F14 3E0003DA03F0130013F8023C5C0001017C147EED01F813FC027814FE0000D9F8005BA24A 13FC017C5D167D137E5C013EEC3DF0013F143F5C011F5D161F36257FA439>119 D121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fv cmcsc10 10 13 /Fv 13 116 df45 D83 D<91383FC006903901FFF80E9039 0FE03E1E90381F0007017EEB03BE01F8EB01FE484813004848147E0007153E485A001F15 1E5B003F150E90C8FC5A1606A212FE1600AA007F1506A37E6D140E001F150C7F000F151C 6C6C1418000315386C6C14706C6C14E0017EEB01C0011FEB078090390FE03E00903801FF F89038003FC0272D7BAB31>99 DII<91383FE003 903901FFF807903907E01E0F90391F00078F017EEB01DF496DB4FC484880484880484880 485A001F815B003F8190C8FC5A82A212FE93C7FCA892383FFFF8A2007F02001380EE3F00 A27E7F121F7F120F6C7E6C7E6C6C5C6C7E017E5C011FEB01CF903907E00F87903901FFFE 039026003FF0C7FC2D2D7BAB35>103 D105 D108 DIII114 D<017F13603901FFE0E0380780F9380E001F48130748130312780070130100 F01300A315607EA26C14007E127F13C0EA3FFEEBFFE06C13F8000713FE6C7FC61480010F 13C01300EC0FE01407EC03F01401A212C01400A37E15E06C1301A26CEB03C06CEB0780B4 EB0F0038F3E01E38E0FFF838C01FE01C2D7BAB26>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fw cmbx12 20.74 21 /Fw 21 121 df49 D<92380FFFE04AB67E020F15F0027F15FE49B87E4917E0010F17F8013F8349D9C01F14FF 9027FFFC0001814801E06D6C80480180021F804890C86C8048486F8048486F8001FF6F80 4801C06E8002F081486D18806E816E18C0B5821BE06E81A37214F0A56C5BA36C5B6C5B6C 5B000313C0C690C9FC90CA15E060A34E14C0A21B80601B0060626295B55A5F624D5C624D 5C4D91C7FC614D5B4D13F04D5B6194B55A4C49C8FC4C5B4C5B4C13E04C5B604C90C9FCEE 7FFC4C5A4B5B4B5B4B0180EC0FF04B90C8FC4B5A4B5A4B48ED1FE0EDFFE04A5B4A5B4A90 C9FC4A48163F4A5ADA3FF017C05D4A48167F4A5A4990CA12FFD903FC160749BAFC5B4919 805B5B90BBFC5A5A5A5A481A005A5ABCFCA462A44C7176F061>I<923801FFFE033FEBFF F84AB7FC020F16E0023F16F84A16FE49B97E49DA003F80010F01F0010714F04901800101 804948C880D97FF86F7F02E081496C834801FC6F148014FF486E6E14C08181481AE081A9 6C5C1BC06C4A5C6C5C6D90C815806D5AD90FF85D90CA150062606295B55A4D5C624D5C4D 5C4D91C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B612F818C018F8F0FF806F 15F092C7003F13FC050713FF050114C071807213F8727F727F867214801BC07214E01BF0 A27214F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC487FA2487FA2B67EA31B FEA3601BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C04B14C06C90C915804E14 006C6D4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01FE013F14C0010F90B85A 6D4DC7FC010117F8D9003F16E0020F93C8FC020015F0030749C9FC507378F061>II<0170187001FEEF01F86D6C160F02F8167F DAFF80EC07FF03FE49B5FC92B85A6262A26297C7FC61616119E061614EC8FC18F86018C0 95C9FC17F817C0020701F8CAFC91CDFCB0923801FFFC031FEBFFE092B612FC020315FF02 0F16C04A16F0027FD9003F7FDAFFF0010F13FE038001037F4AC76C8002F86E804A6F7F4A 6F7F4A834A6F7F91C980137E017C707F90CAFC1B80A21BC0A2841BE0A51BF0A313FE3803 FF80000F7F4813F0487F5A80B5FCA41BE0A44E14C05C7E4A18805C4A5D6C90C9150001E0 606C6C5E6D606C6C4C5B7F000794B55A6C6C6C4A5C6C6D4A5C6E4A5C26007FF8021F49C7 FC6DB4027F5B6DD9F007B55A6D90B712E0010317806D4CC8FC6D6C15F8021F15C002034A C9FCDA003F13804C7376F061>I<94381FFF800403B512F8043F14FE4BB77E030782031F 16F0037F8292B5D8FC017F02039139C0001FFE4A49C7EA07FF021F01F8804A496E13804A 01C0140F91B548023F13C04991C85A494992B5FC49494A14E0495B495E5D5B495BA290B5 5A5A5D487114C0A24891C91480731300735A48F00FF896C8FC485BA45AA44849903803FF E0041F13FE047FEBFFC04BB612F84B81030F15FFB590261FF8038092273FE0007F13E004 80011F7F4BC76C7F03FE6E7F4B6E7FDAFDF86E7FDAFFF017804B6E14C01BE05D7313F05D 1BF8A292C914FC85A21BFE5CA31BFFA26C5BA87EA4807EA21BFE7EA37E1BFC6E5E6C1AF8 A27E6F17F06C95B512E06D7F1BC06D6D4A14806D4C1400816D6D4A5B6D6D4A5B6D01FF4A 13F001006E017F5B6ED9F007B55A6E90B7C7FC020F5E020316F86E16E0DA003F15800307 02FCC8FCDB007F1380507378F061>II<93B57E031F14FC92B77E020316F0020F16FC023F16FF4A83 49B5D8800314E04901F8C7003F7F4901C0020F7F4990C800037FD91FFC6F7F49486F6C7E 137F4A7013804948827313C05A4A821BE05AA285487FA38080806E5E8003C017C08103F8 5D03FE17806F6C5C6C6F160004F05C04FC4A5A6C6F5D706C13FFDDE0015B6CDCF8035BDD FC0F13C06DDBFF1F5B6D93B5C7FC19FC6D17F06D5F6D17806D17E06D836D6C16FC6E16FF 020F836E17E06E83020F83023F8391B97E4984010701F0178049D9C07F16C0013FD9801F 16E049EB00074948010116F048497F4849023F15F84849140F4A6E15FC48160148496E6C 14FE4A151F488391C9120348050014FF193F49838500FF84854983A28586A3861BFEA27F A2007F1AFC7F1A7F1BF86C7FF2FFF06C7F6E4C13E06C6D4C13C06C6D5E6E4C13806C6D4C 13006C6D6CED7FFE6C02E04A485A013F01FC020F13F06D9026FFC001B55A010791B71280 6D95C7FC010017FC021F16F002071680DA007F02FCC8FC030191C9FC507378F061>I65 DI<96267FFFE01670063FB6ED01F80503B700F01403053F 04FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F 03C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA 121F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A8549 4A85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E 075DA2F703F0489BC7FCA45DA2B6FCB27EA281A47EA2F703F06FF307F87EA36C80A21F0F 7E6F1CF07E6F1B1F7E20E06C6E1B3F816DF57FC06D80F7FF806D806D6E4F13006D6E616D 525A826D6E4F5A6D6E4F5A6E6D6C4E5A021F6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F 90C7FC02006E6CEE3FFE6F02F0EEFFFC031F02FE03035B6FDAFFC0021F13E0030303FF01 03B55A030093B7C8FC043F18FC040718F0040118C0DC003F94C9FC050316F8DD003F1580 DE007F01F0CAFC757A75F78C>I<92383FFFF80207B612E0027F15FC49B87E010717E001 1F83499026F0007F13FC4948C7000F7F90B502036D7E486E6D806F6D80727F486E6E7F84 86727FA28684A26C5C72806C5C6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7 FC0303B8FC157F0203B9FC021FECFE0391B612800103ECF800010F14C04991C7FC017F13 FC90B512F04814C0485C4891C8FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D 187E6C6D846E4A48806C6D4A4814FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE000191 39FC03FFC06C91B6487E013F4B487E010F4B1307010303F01301D9003F0280D9003F13FC 020101F8CBFC57507ACE5E>97 D<97380FFFE00607B6FCA8F00003190086B3AD93383FFF 800307B512F8033F14FF4AB712C0020716F0021F16FC027F9039FE007FFE91B500F0EB0F FF01030280010190B5FC4949C87E49498149498149498149498190B548814884484A8192 CAFC5AA2485BA25A5C5AA35A5CA4B5FCAF7EA4807EA37EA2807EA26C7F616C6E5D6C606C 80616D6D5D6D6D5D6D6D92B67E6D6D4A15FC010301FF0207EDFFFE6D02C0EB3FFE6D6C90 39FC01FFF86E90B65A020F16C002031600DA007F14FC030F14E09226007FFEC749C7FC5F 797AF76C>100 D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE02 7FD9F8077F49B5D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49 496E7F90B55A48727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF8 85A2B5FCA391BAFCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E 17F06C191F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0F FE6D02E0EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC0200 16F8031F15E0030392C8FCDB000F13E04D507BCE58>I<903801FFFCB6FCA8C67E131F7F B3AD95380FFFE095B512FE05036E7E050F15E0053F15F84D81932701FFF01F7F4CD90007 7FDC07FC6D80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA2 5EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8617879F76C>104 DI<902601FFF891380FFFE0B692B512FE05036E7E050F15E0053F15F84D81 932701FFF01F7F4CD900077FDC07FC6D80C66CDA0FF06D80011FDA1FC07F6D4A48824CC8 FC047E6F7F5EEDF9F85E03FB707F5E15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B81280 A8614E79CD6C>110 D<902601FFFCEC7FFEB6020FB512F0057F14FE4CB712C0040716F0 041F82047F16FE93B5C66C7F92B500F0010F14C0C66C0380010380011F4AC76C806D4A6E 8004F06F7F4C6F7F4C6F7F4C8193C915804B7014C0861DE0A27414F0A27414F8A47513FC A57513FEAF5113FCA598B512F8A31DF0621DE0621DC0621D806F5E701800704B5B505B70 4B5B7092B55A04FC4A5C704A5C706C010F5C05E0013F49C7FC9227FE7FFC01B55A70B712 F0040F16C0040393C8FC040015F8053F14C0050301F0C9FC94CCFCB3A6B812E0A85F6F7A CD6C>112 D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE4C8093261FFC 3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16F815FB16F016 E015FF16C07114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA65DB3B3A2B812 F8A8434E7ACD4F>114 D<15FFA75CA55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F 5B90B9FC120FBAFCA6D8000791C9FCB3B3A3F01FE0AE183F7014C07F187F7014806D16FF 826D4B13006E6D485AEEFE0F6E90B55A020F5D6E5D020115C06E6C5C031F49C7FC030113 F03B6E7CEC4B>116 D<007FB7023FB612F0A8D8000302C0020191C7FC6D6E9138007FF0 705E6D4E5A6E6D4A5B6E6D4A90C8FC6E6D5C704A5A6E4C5A6E6E5C6E6E495A6E6E495A71 13FF6E6E485B6F4A5B6F6D4890C9FC6F01FE5B71485A6FEC9FF86F14BF6FECFFF06F5D61 6F5D7091CAFC705B828470808270807080854C805E4C80854C804C81EE7FE7DCFFE3804B 01C1804B0180804D804B487F4B486D7F031F6E7F4B486D7F4B48824B487F4C6D804A496D 804A90C8804A844A48814A486F7F4A486F7F4B6F7F4A48844A486F80010F01F881B76C91 B712FEA85F4D7DCC66>120 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fx cmmi10 10 52 /Fx 52 122 df<0140151E01E0153F00015E484816805B120790C9123F000E161F170F5A 1707481700A2003014C014010070010314061260A2170E00E04948130C5A171C92C7FC5F A26C495C4A14F04A7E6C017F495A4A6C485A3AF801F7E00F3BFE0FF3F83F80267FFFE3B5 FC02C191C7FC6C01815B02005BD80FFCEB7FF0D803F0EB0FC031267FA434>33 D<126012F812FE6C7E7F13F0EAF3FCEAF0FEEB7F80EB1FE0EB07F86D7EEB00FFEC3FC0EC 0FE0EC07F8EC01FE9138007F80ED3FC0ED0FE0A2ED3FC0ED7F80913801FE00EC07F8EC0F E0EC3FC002FFC7FCEB03FC495AEB1FE0EB7F8001FEC8FCEAF3FCEAFFF013C05B48C9FC12 F8126023287DA82A>46 D<16C0ED03E0150F153F157FEC01FFEC07F9EC0FE1EC3FC1ECFF 01EB03FCEB07F8EB1FE0EB7F80EBFE00EA03FCEA0FF0EA3FC0485A00FEC7FCA2EA7F806C 7EEA0FF0EA03FCC67EEB7F80EB1FE0EB07F8EB03FCEB00FFEC3FC1EC0FE1EC07F9EC01FF EC007F153F150F1503ED00C023287DA82A>I<121C127FEAFF80A5EA7F00121C09097988 17>58 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E 5A5A5A12600A19798817>II<150C151E153EA2153C157CA2157815F8A215F01401A215E01403A215C01407A2 1580140FA215005CA2141E143EA2143C147CA2147814F8A25C1301A25C1303A2495AA25C 130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A25B1207A25B 120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601F537BBD2A>I<126012 FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0 EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE01FF9338 007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0ED7F C04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA3F F0EA7FC048CBFC12FC1270323279AD41>I<1760177017F01601A21603A21607160FA24C 7EA216331673166316C3A2ED0183A2ED0303150683150C160115181530A21560A215C014 011580DA03007FA202061300140E140C5C021FB5FC5CA20260C7FC5C83495A8349C8FC13 06A25BA25B13385B01F01680487E000716FFB56C013F13FF5EA2383C7DBB3E>65 D<0103B77E4916F018FC903B0007F80003FE4BEB00FFF07F80020FED3FC0181F4B15E0A2 141FA25DA2143F19C04B143F1980027F157F190092C812FE4D5A4A4A5AEF0FF04AEC1FC0 05FFC7FC49B612FC5F02FCC7B4FCEF3FC00103ED0FE0717E5C717E1307844A1401A2130F 17035CA2131F4D5A5C4D5A133F4D5A4A4A5A4D5A017F4BC7FC4C5A91C7EA07FC49EC3FF0 B812C094C8FC16F83B397DB83F>I<9339FF8001C0030F13E0037F9038F80380913A01FF 807E07913A07F8000F0FDA1FE0EB079FDA3F80903803BF0002FFC76CB4FCD901FC80495A 4948157E495A495A4948153E017F163C49C9FC5B1201484816385B1207485A1830121F49 93C7FCA2485AA3127F5BA312FF90CCFCA41703A25F1706A26C160E170C171C5F6C7E5F00 1F5E6D4A5A6C6C4A5A16076C6C020EC8FC6C6C143C6C6C5C6CB4495A90393FE00FC0010F B5C9FC010313FC9038007FC03A3D7CBA3B>I<0103B812F05BA290260007F8C7123F4B14 07F003E0020F150118005DA2141FA25D19C0143FA24B1330A2027F1470190092C7126017 E05C16014A495A160F49B6FCA25F9138FC000F01031407A24A6DC8FCA201075C18034A13 0660010F160693C7FC4A150E180C011F161C18184A1538A2013F5E18F04A4A5AA2017F15 074D5A91C8123F49913803FF80B9FCA295C7FC3C397DB83D>69 D<0103B812E05BA29026 0007F8C7123F4B140FF003C0140F18015DA2141FA25D1980143FA25D1760027F14E095C7 FC92C75AA24A1301A24A495A16070101141F91B6FC94C8FCA2903903FC001F824A130EA2 1307A24A130CA2010F141CA24A90C9FCA2131FA25CA2133FA25CA2137FA291CBFC497EB6 12C0A33B397DB835>II<0103B5D8F803B512F849 5DA290260007F8C73807F8004B5DA2020F150F615DA2021F151F615DA2023F153F615DA2 027F157F96C7FC92C8FCA24A5D605CA249B7FC60A202FCC7120101031503605CA2010715 07605CA2010F150F605CA2011F151F605CA2013F153F605CA2017F157F95C8FC91C8FC49 6C4A7EB690B6FCA345397DB845>I<0107B512FCA216F890390007F8005DA2140FA25DA2 141FA25DA2143FA25DA2147FA292C7FCA25CA25CA21301A25CA21303A25CA21307A25CA2 130FA25CA2131FA25CA2133FA25CA2137FA291C8FC497EB6FCA326397DB824>I<0103B6 FC5B5E90260007FCC8FC5D5D140FA25DA2141FA25DA2143FA25DA2147FA292C9FCA25CA2 5CA21301A25CA21303A25CA2130718404A15C0A2010F150118804A1403A2011F16005F4A 1406170E013F151E171C4A143C177C017F5D160391C7120F49EC7FF0B8FCA25F32397DB8 39>76 D<902603FFF893383FFF80496081D900079438FF80000206DC01BFC7FCA2020E4C 5A1A7E020C1606190CDA1C7E16FE4F5A02181630A20238166162023016C1F00181DA703F 158395380303F002601506A202E0ED0C076202C01518183001016D6C140F06605B028015 C0A20103923801801FDD03005B140092380FC00649173F4D91C8FC01065DA2010E4B5B4D 137E130C6F6C5A011C17FEDCE1805B011802E3C7FCA2013802E6130104EC5C1330ED03F8 017016034C5C01F05CD807FC4C7EB500E0D9C007B512F01680150151397CB851>I<9026 03FFF891381FFFF8496D5CA2D90007030113006FEC007C02061678DA0EFF157081020C6D 1460A2DA1C3F15E0705CEC181F82023815016F6C5C1430150702706D1303030392C7FC02 607FA2DAE0015C701306ECC0008201016E130EEF800C5C163F0103EDC01C041F131891C7 13E0160F49EDF03818300106140717F8010E02031370EFFC60130CEE01FE011C16E00400 5B011815FF177F1338600130153FA20170151F95C8FC01F081EA07FCB512E01706A24539 7DB843>I<0103B7FC4916E018F8903B0007F80007FC4BEB00FE187F020FED3F80F01FC0 5DA2021F16E0A25DA2143FF03FC05DA2027FED7F80A292C8130018FE4A4A5A604AEC07F0 4D5A0101ED3FC04CB4C7FC91B612FC17E0D903FCCAFCA25CA21307A25CA2130FA25CA213 1FA25CA2133FA25CA2137FA291CBFC497EB6FCA33B397DB835>80 D<4BB4FC031F13F09238FE01FC913903F0007EDA07C0EB1F80DA1F80EB0FC0023EC7EA07 E002FCEC03F0495A4948EC01F8495A4948EC00FC495A013F16FE49C9FC13FE187F485A12 035B12075B120F4916FF121FA2485AA34848ED01FEA448C9EA03FCA3EF07F8A218F0170F 18E0171F18C0EF3F807EEF7F0017FEDA07C05B6C90391FF001F8903980383803001F496C 485A9139E00C0FE0260FC0C0EB1F80D807E1D90E3FC7FC0280137ED803F1EB07F8D801F9 5C3A007FC00FC0903A3FE07F0003903807FFFE0100018F5BDA000F1306170E171E705A17 7CEEC1F816FF5FA25F5F6F5B6F48C7FCED00F8384B7CBA42>I<0103B612F849EDFF8018 E0903B0007F8001FF84BEB03FCEF00FE020F157FA24BEC3F80A2021F16C0A25DA2143FF0 7F805DA2027FEDFF006092C7485A4D5A4A4A5A4D5A4AEC1F80057FC7FC0101EC07F891B6 12E094C8FC9139FC000FC00103EC03F0707E4A6D7E831307177E5C177F010F5D5F5CA201 1F1401A25CA2133F16034A4A1360A2017F17E019C091C71401496C01011480B615039339 00FE0700EF7E0ECAEA1FFCEF07F03B3B7DB83F>I<92391FE00380DBFFFC130002036D5A 91390FE01F8F91393F0007DF027EEB01FE02F81300495A4948147E177C4948143C495AA2 011F153891C8FCA3491530A28094C7FC80806D7E14FEECFFE06D13FE6DEBFFC06D14F06D 806D80021F7F02037FEC003F03037F1500167F163F161FA3120C160FA2001C151F94C7FC A3003C153EA25E003E5D127E007F4A5A6D495A6DEB0FC0D8F9F0495AD8F0FE01FEC8FC39 E03FFFF8010F13E0D8C00190C9FC313D7CBA33>I<0003B812FEA25A903AF8003FC00101 C0913880007E4848163C90C7007F141C121E001C92C7FCA2485CA200305C007017180060 130112E0485CA21403C716005DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147F A292C9FCA25CA25CA21301A25CA21303A25CEB0FFC003FB6FC5AA237397EB831>I<003F B56C48B51280485DA226007F80C7381FF00091C8EA07C0604993C7FCA2491506A2000116 0E170C5BA20003161C17185BA20007163817305BA2000F167017605BA2001F16E05F5BA2 003F15015F5BA2007F150394C8FC90C8FCA25E4815065A160E160C161C161816385E127E 5E4B5A6C4A5A4BC9FC6C6C131E6C6C5B6C6C13F83903F807E06CB55A6C6C48CAFCEB0FF0 393B7BB839>I<267FFFFC91383FFFC0B55DA2000390C83807FC006C48ED03E060600000 94C7FC5F17065FA25F6D5DA26D5D17E05F4C5AA24CC8FC6E1306A2013F5C161C16185EA2 5E6E5BA2011F495A150393C9FC1506A25D6E5AA2010F5B157015605DA2ECE18002E3CAFC 14F3EB07F614FE5C5CA25C5CA26D5AA25C91CBFC3A3B7CB830>I<49B500F890387FFFF0 95B5FC1AE0D90003018090380FFC004BC713E00201ED07804EC7FC6E6C140E606F5C705B 606F6C485A4D5A031F91C8FCEEE0065F6F6C5A5F03075B705A16F96FB45A94C9FC6F5AA3 6F7EA34B7FED037F9238063FC0150E4B6C7E1538ED700F03E07F15C04A486C7EEC030002 0613034A805C4A6D7E14704A1300494880495A49C86C7E130E011E153F017E4B7ED803FF 4B7E007F01E0011FEBFFC0B5FC6144397EB845>88 DI<91B712FCA25B9239E00007F84AC7EA0FF0D903F8EC1FE04AEC3FC04AEC7F804A15 0049485C91C7485A4C5A010E4A5A4C5A010C4A5A011C4A5A01185D167F4CC7FC90C7485A 4B5A4B5A4B5A5E151F4B5A4B5A4BC8FC4A5A4A5A4A5A5D140F4A5A4A5A4A48130C4AC7FC 495A4A141C01031518495A494814384948143049481470495A49C812F0495D0001150148 48140348484A5A4848140F4848141F4848EC7F804848EB07FF90B7FCB8FC94C7FC36397B B839>I<147E903803FF8090390FC1C38090391F00EFC0017E137F49133F485A4848EB1F 8012075B000F143F48481400A2485A5D007F147E90C7FCA215FE485C5AA214015D48150C A21403EDF01C16181407007C1538007E010F1330003E131F027B13706C01E113E03A0F83 C0F9C03A03FF007F80D800FCEB1F0026267DA42C>97 D<133FEA1FFFA3C67E137EA313FE 5BA312015BA312035BA31207EBE0FCEBE3FF9038E707C0390FFE03E09038F801F001F013 F8EBE000485A15FC5BA2123F90C7FCA214015A127EA2140312FE4814F8A2140715F05AEC 0FE0A215C0EC1F80143F00781400007C137E5C383C01F86C485A380F07C06CB4C7FCEA01 FC1E3B7CB924>II<163FED1FFFA3ED007F167EA216FEA216FCA21501A216F8A21503A2 16F0A21507A2027E13E0903803FF8790380FC1CF90381F00EF017EEB7FC049133F485A48 48131F000715805B000F143F485A1600485A5D127F90C7127EA215FE5A485CA21401A248 ECF80CA21403161CEDF0181407007C1538007E010F1330003E131F027B13706C01E113E0 3A0F83C0F9C03A03FF007F80D800FCEB1F00283B7DB92B>II<16F8ED03FEED0F 8792381F0F80ED3E3F167F157CA215FC1700161C4A48C7FCA414035DA414075DA20107B5 12F0A39026000FE0C7FC5DA4141F5DA4143F92C8FCA45C147EA514FE5CA413015CA4495A A45C1307A25C121E123F387F8F80A200FF90C9FC131E12FEEA7C3CEA7878EA1FF0EA07C0 294C7CBA29>III<14E0EB03F8A21307A314F0EB01 C090C7FCAB13F8EA03FEEA070F000E1380121C121812381230EA701F1260133F00E01300 12C05BEA007EA213FE5B1201A25B12035BA20007131813E01438000F133013C01470EB80 6014E014C01381EB838038078700EA03FEEA00F815397EB71D>I<150FED3F80A2157FA3 1600151C92C7FCABEC0F80EC3FE0ECF0F0903801C0F849487E14005B130E130C131CEB18 01133801305BA2EB0003A25DA21407A25DA2140FA25DA2141FA25DA2143FA292C7FCA25C A2147EA214FEA25CA21301001E5B123F387F83F0A238FF87E0495A00FE5BD87C1FC8FCEA 707EEA3FF8EA0FC0214981B722>III< D803E0137F3A07F801FFE03A0E3C0781F03A1C3E1E00F826383F387F00305B4A137C0070 5B00605BA200E090C712FC485A137EA20000140101FE5C5BA2150300015D5B15075E1203 49010F133016C0031F13700007ED80605B17E0EE00C0000F15014915801603EE0700001F EC0F0E49EB07FC0007C7EA01F02C267EA432>110 DI<90390F8003 F090391FE00FFC903939F03C1F903A70F8700F80903AE0FDE007C09038C0FF80030013E0 0001491303018015F05CEA038113015CA2D800031407A25CA20107140FA24A14E0A2010F 141F17C05CEE3F80131FEE7F004A137E16FE013F5C6E485A4B5A6E485A90397F700F80DA 383FC7FC90387E1FFCEC07E001FEC9FCA25BA21201A25BA21203A25B1207B512C0A32C35 83A42A>I<02FC13C0903803FF0190380F838390383F01C790397E00EF8049137F485A48 48133F000715005B485A001F5C157E485AA2007F14FE90C75AA3481301485CA31403485C A314075D140F127C141F007E495A003E137F381F01EF380F839F3903FF1F80EA00FC1300 143F92C7FCA35C147EA314FE5C130190387FFFF0A322357DA425>I<3903E001F83907F8 07FE390E3C1E07391C3E381F3A183F703F800038EBE07F0030EBC0FF00705B00601500EC 007E153CD8E07F90C7FCEAC07EA2120013FE5BA312015BA312035BA312075BA3120F5BA3 121F5B0007C9FC21267EA425>I<14FF010313C090380F80F090383E00380178131C153C 4913FC0001130113E0A33903F000F06D13007F3801FFE014FC14FF6C14806D13C0011F13 E013039038003FF014071403001E1301127FA24814E0A348EB03C012F800E0EB07800070 EB0F006C133E001E13F83807FFE0000190C7FC1E267CA427>II<13F8D803FE1438D8070F147C000E6D13FC121C12 18003814011230D8701F5C12601503EAE03F00C001005B5BD8007E1307A201FE5C5B150F 1201495CA2151F120349EC80C0A2153F1681EE0180A2ED7F0303FF130012014A5B3A00F8 079F0E90397C0E0F1C90393FFC07F8903907F001F02A267EA430>I<01F8EB03C0D803FE EB07E0D8070F130F000E018013F0121C12180038140700301403D8701F130112601500D8 E03F14E000C090C7FC5BEA007E16C013FE5B1501000115805B150316001203495B150615 0E150C151C151815385D00015C6D485A6C6C485AD97E0FC7FCEB1FFEEB07F024267EA428 >I<01F816F0D803FE9138E001F8D8070F903801F003000ED9800314FC121C1218003802 0713010030EDE000D8701F167C1260030F143CD8E03F163800C001005B5BD8007E131F18 3001FE5C5B033F1470000117604991C7FCA218E000034A14C049137E1701188017031800 5F03FE1306170E000101015C01F801BF5B3B00FC039F8070903A7E0F0FC0E0903A1FFC03 FFC0902703F0007FC7FC36267EA43B>I<13F8D803FE1470D8070F14F8000EEB8001121C 121800381403003015F0EA701F1260013F130700E0010013E012C05BD8007E130F16C013 FE5B151F000115805BA2153F000315005BA25D157EA315FE5D1401000113033800F80790 387C1FF8EB3FF9EB0FE1EB00035DA2000E1307D83F805B007F495AA24A5A92C7FCEB003E 007C5B00705B6C485A381E07C06CB4C8FCEA01FC25367EA429>121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fy cmti10 10 62 /Fy 62 123 df12 D39 D<150C151C153815F0EC01E0EC03 C0EC0780EC0F00141E5C147C5C5C495A1303495A5C130F49C7FCA2133EA25BA25BA2485A A212035B12075BA2120F5BA2121FA290C8FCA25AA2123EA2127EA2127CA412FC5AAD1278 A57EA3121C121EA2120E7EA26C7E6C7EA212001E5274BD22>I<140C140E80EC0380A2EC 01C015E0A2140015F0A21578A4157C153CAB157CA715FCA215F8A21401A215F0A21403A2 15E0A21407A215C0140F1580A2141F1500A2143EA25CA25CA2495AA2495A5C1307495A91 C7FC5B133E133C5B5B485A12035B48C8FC120E5A12785A12C01E527FBD22>I44 D<387FFFF8A2B5FCA214F0150579941E>I<120EEA3F8012 7F12FFA31300127E123C0909778819>I<1703EF0780170FA2EF1F005F173E5FA25FA24C 5A16035F4C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5A15075E4B5AA24BC8FC A2153E157E157C5DA24A5AA24A5A14075D4A5AA24AC9FCA2143EA25C14FC5C495AA2495A A2495A130F5C49CAFCA2133EA25B13FC5B485AA2485AA2485A120F5B48CBFCA2123EA25A A25AA2127031537FBD2A>I50 D<16E0ED01F01503A3150716E0A3150F16C0A2151F1680A2ED3F00A3157EA215 7C15FC5D14015D14035D14075D140F5D141F92C7FC143EA25CECF81C153E903801F07EEB 03E014C090380780FE130F49485A133EEB7C01137801F05BEA01E03803C003EA0FFE391F FFC3F04813FB267C01FF13403AF0003FFFE000601307C71400EC0FE05DA3141F5DA3143F 92C7FCA4143E141C24487DB72A>52 D<010314186E13F8903907F007F091B512E016C016 00495B15F8010E13E0020CC7FC011EC8FC131CA3133C1338A313781370A2147F9038F3FF C09038EF83E09038FC01F0496C7E485A497F49137CC8FC157EA315FEA41401000C5C123F 5A1403485C5A4A5A12F800E05C140F4A5A5D6C49C7FC0070137E00785B387C01F8383E07 F0381FFFC06C90C8FCEA01F8253A77B72A>I55 DII<133C137E13FF5AA313FE13FCEA00701300B2120EEA3F80127F12FFA313 00127E123C102477A319>II<14FCEB07FF90381F03C090383C01E090387000F049137048481378 485A120748C7FC120E121E121C003C14F8003814F0007813011270007CEB03E000FE1307 EC0FC0EC1F80147F48EBFF00387001FCC6485AEB0FF0495AEB3F8049C7FCEA01FE485A13 F0485A5B380F81C01301A2495A130791C7FC131EEA07FCEA01F0C9FCA81207EA1FC0123F 127FA35B6CC8FC121E1D3C70BB2A>63 DII<0107B612FCEFFF8018C0903B000FF0001FF04BEB07F817 03021F15FC17014B14FEA2023F1400A24B1301A2147F18FC92C7120318F84A140718F04A EC0FE0EF1FC00101ED3F80EF7F004AEB01FEEE07F849B612E05F9139F80007F0EE01FC01 076E7E177F4AEC3F80A2010F16C0171F5CA2131F173F5CA2133FEF7F805C1800017F5D4C 5A91C7485A5F49140FEE1FE0494A5A00014AB45AB748C7FC16F816C037397BB83A>II<0103B6 12FEEFFFC018F0903B0007F8000FF84BEB03FCEF00FE020F157FF03F804B141F19C0021F 150F19E05D1807143F19F05DA2147FA292C8FCA25C180F5CA2130119E04A151FA2130319 C04A153FA201071780187F4A1600A2010F16FEA24A4A5A60011F15034D5A4A5D4D5A013F 4B5A173F4A4AC7FC17FC017FEC03F84C5A91C7EA1FC04949B45A007F90B548C8FCB712F0 16803C397CB83F>I<0107B712FEA3903A000FF000074B1300187C021F153CA25DA2143F A25D1838147FA292C8FCEE03804A130718004A91C7FCA201015CA24A131E163E010314FE 91B5FC5EA2903807F800167C4A1378A2130FA24A1370A2011F14F0A24A90C8FCA2133FA2 5CA2137FA291CAFCA25BA25B487EB6FCA337397BB836>70 D<0103B5D8F80FB512E0A390 260007F8C7381FE0004B5DA2020F153F615DA2021F157F96C7FC5DA2023F5D605DA2027F 14016092C7FCA24A1403605CA249B7FC60A202FCC712070103150F605CA20107151F605C A2010F153F605CA2011F157F95C8FC5CA2013F5D5F5CA2017F14015F91C7FC491403007F D9FE01B512F8B55BA243397CB83E>72 D<0103B512F8A390390007F8005DA2140FA25DA2 141FA25DA2143FA25DA2147FA292C7FCA25CA25CA21301A25CA21303A25CA21307A25CA2 130FA25CA2131FA25CA2133FA25CA2137FA291C8FC497EB6FCA25C25397CB820>I<0207 B512F0A391390007FC006F5AA215075EA3150F5EA3151F5EA3153F5EA3157F93C7FCA35D 5DA314015DA314035DA31407A25DA2140FA2003F5C5A141F485CA24A5A12FC00E049C8FC 14FE00705B495A6C485A381E0FC06CB4C9FCEA01F82C3B78B82C>I<0103B500F890387F FFE0A21AC090260007F8C7380FFC004B15E061020F4BC7FC183E4B5C18F0021F4A5A4D5A 4BEB0F804DC8FC023F143C5F4B5B4C5A027FEB07C04CC9FCED001E5E4A5BED01FCECFE03 15070101497E151FECFC7C4B7E903903FDE07FDAFFC07F1580ED003F49488014F84A131F 83130F160F4A801607011F81A24A130383133F16014A80A2017F6E7EA291C8FC494A7F00 7F01FE011F13FCB55CA243397CB840>I<0107B512FCA25E9026000FF8C7FC5D5D141FA2 5DA2143FA25DA2147FA292C8FCA25CA25CA21301A25CA21303A25CA21307A25CA2130F17 0C4A141CA2011F153C17384A1478A2013F157017F04A14E01601017F140317C091C71207 160F49EC1F80163F4914FF000102071300B8FCA25E2E397BB834>I<902607FFF8923807 FFF0614F13E0D9000FEFF0004F5AA2021F167FF1EFC0141DDA1CFCEC01CF023C16DF9538 039F800238ED071FA20278ED0E3F97C7FC0270151CA202F04B5AF0707E14E0037E14E001 0117FE4D485A02C0EC0380A20103ED0701610280140EA20107ED1C0305385B14006F1370 49160705E05B010EEC01C0A2011E913803800F61011CEC0700A2013C020E131F4C5C1338 ED1FB80178163F04F091C8FC01705CA201F04A5B187E00015DD807F816FEB500C0903900 7FFFFC151E150E4C397AB84A>I<902603FFF891B512E0A281D90007923807F8006F6E5A 61020F5E81DA0E7F5DA2021E6D1307033F92C7FC141C82DA3C1F5C70130EEC380FA20278 6D131E0307141C147082DAF003143C70133814E0150101016E1378030014705C8201036E 13F0604A1480163F010715C1041F5B91C7FC17E149EC0FE360010E15F31607011E15FF95 C8FC011C80A2013C805F1338160013785F01F8157CEA03FC267FFFE0143CB51538A24339 7CB83E>I<0107B612F817FF1880903B000FF0003FE04BEB0FF0EF03F8141FEF01FC5DA2 023F15FEA25DA2147FEF03FC92C7FCA24A15F817074A15F0EF0FE01301EF1FC04AEC3F80 EFFE0001034A5AEE0FF091B612C04CC7FCD907F8C9FCA25CA2130FA25CA2131FA25CA213 3FA25CA2137FA291CAFCA25BA25B1201B512FCA337397BB838>80 D<0103B612F017FEEFFF80903B0007F8003FC04BEB0FF01707020FEC03F8EF01FC5DA202 1F15FEA25DA2143FEF03FC5DA2027FEC07F818F092C7120F18E04AEC1FC0EF3F004A14FE EE01F80101EC0FE091B6128004FCC7FC9138FC003F0103EC0F80834A6D7E8301071403A2 5C83010F14075F5CA2011F140FA25CA2133F161F4AECE007A2017F160F180E91C7FC4902 0F131C007F01FE153CB5913807F078040313F0CAEAFFE0EF3F80383B7CB83D>82 D<92383FC00E913901FFF01C020713FC91391FC07E3C91393F001F7C027CEB0FF84A1307 49481303495A4948EB01F0A2495AA2011F15E091C7FCA34915C0A36E90C7FCA2806D7E14 FCECFF806D13F015FE6D6D7E6D14E0010080023F7F14079138007FFC150F15031501A215 00A2167C120EA3001E15FC5EA3003E4A5AA24B5AA2007F4A5A4B5A6D49C7FC6D133ED8F9 F013FC39F8FC03F839F07FFFE0D8E01F138026C003FCC8FC2F3D7ABA2F>I<0007B812E0 A25AD9F800EB001F01C049EB07C0485AD900011403121E001C5C003C1780140312380078 5C00701607140700F01700485CA2140FC792C7FC5DA2141FA25DA2143FA25DA2147FA292 C9FCA25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CEB3FF0007FB512F8B6FC A2333971B83B>I<003FB539800FFFFEA326007F80C7EA7F8091C8EA3F00173E49153CA2 491538A20001167817705BA2000316F05F5BA2000715015F5BA2000F15035F5BA2001F15 0794C7FC5BA2003F5D160E5BA2007F151E161C90C8FCA2163C4815385A16781670A216F0 4B5A5E1503007E4A5A4BC8FC150E6C143E6C6C5B15F0390FC003E03907F01FC00001B5C9 FC38007FFCEB1FE0373B70B83E>I87 D<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A12 0FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F15 831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901 F000F0222677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312015BA312035BA31207 EBE0F8EBE7FE9038EF0F80390FFC07C013F89038F003E013E0D81FC013F0A21380A2123F 1300A214075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215005C147E5C387801F8 007C5B383C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B926>I<147F903803FF C090380FC1E090381F0070017E13784913383901F801F83803F003120713E0120FD81FC0 13F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C14F0007EEB01E0003E EB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426>II<147F9038 03FFC090380FC1E090383F00F0017E13785B485A485A485A120F4913F8001F14F0383F80 01EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA21530007C14381578007E 14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C690C7FC1D2677A426> IIIII<150E153F157FA3157E151C1500ABEC1F80EC7F C0ECF1F0EB01C090380380F813071401130F130E131EEB1C03133C013813F0A2EB0007A2 15E0A2140FA215C0A2141FA21580A2143FA21500A25CA2147EA214FEA25CA21301A25CA2 13035C121C387E07E0A238FE0FC05C49C7FCEAF83EEA787CEA3FF0EA0FC0204883B619> IIIII<147F903803FFC0 90380FC1F090381F00F8017E137C5B4848137E4848133E0007143F5B120F485AA2485A15 7F127F90C7FCA215FF5A4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007E EB1F80003EEB3F00147E6C13F8380F83F03803FFC0C648C7FC202677A42A>I<90390780 07C090391FE03FF090393CF0787C903938F8E03E9038787FC00170497EECFF00D9F0FE14 8013E05CEA01E113C15CA2D80003143FA25CA20107147FA24A1400A2010F5C5E5C4B5A13 1F5EEC80035E013F495A6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F8001FEC9 FCA25BA21201A25BA21203A25B1207B512C0A3293580A42A>II<3903C003F0390FF01FFC391E783C0F381C7C703A3C3EE03F803838 3FC0EB7F800078150000701300151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA3 12075BA3120F5BA3121F5BA3123F90C9FC120E212679A423>I<14FE903807FF8090380F 83C090383E00E04913F00178137001F813F00001130313F0A215E00003EB01C06DC7FC7F EBFFC06C13F814FE6C7F6D13807F010F13C01300143F141F140F123E127E00FE1480A348 EB1F0012E06C133E00705B6C5B381E03E06CB45AD801FEC7FC1C267AA422>II<13F8D803FEEB01C0D8078FEB03E0 390E0F8007121E121C0038140F131F007815C01270013F131F00F0130000E015805BD800 7E133FA201FE14005B5D120149137EA215FE120349EBFC0EA20201131E161C15F813E016 3CD9F003133814070001ECF07091381EF8F03A00F83C78E090393FF03FC090390FC00F00 272679A42D>I<01F0130ED803FC133FD8071EEB7F80EA0E1F121C123C0038143F49131F 0070140FA25BD8F07E140000E08013FEC6485B150E12015B151E0003141C5BA2153C0007 14385B5DA35DA24A5A140300035C6D48C7FC0001130E3800F83CEB7FF8EB0FC0212679A4 26>I<01F01507D803FC903903801F80D8071E903907C03FC0D80E1F130F121C123C0038 021F131F49EC800F00701607A249133FD8F07E168000E0ED000313FEC648491307180000 01147E5B03FE5B0003160E495BA2171E00070101141C01E05B173C1738A2177817700203 14F05F0003010713016D486C485A000190391E7C07802800FC3C3E0FC7FC90393FF81FFE 90390FE003F0322679A437>I<903907E007C090391FF81FF89039787C383C9038F03E70 3A01E01EE0FE3803C01F018013C0D8070014FC481480000E1570023F1300001E91C7FC12 1CA2C75AA2147EA214FEA25CA21301A24A1370A2010314F016E0001C5B007E1401010714 C000FEEC0380010F1307010EEB0F0039781CF81E9038387C3C393FF03FF03907C00FC027 267CA427>I<13F0D803FCEB01C0D8071EEB03E0D80E1F1307121C123C0038140F4914C0 1270A249131FD8F07E148012E013FEC648133F160012015B5D0003147E5BA215FE00075C 5BA214015DA314035D14070003130FEBF01F3901F87FE038007FF7EB1FC7EB000F5DA214 1F003F5C48133F92C7FC147E147C007E13FC387001F8EB03E06C485A383C1F80D80FFEC8 FCEA03F0233679A428>I<903903C0038090380FF007D91FF81300496C5A017F130E9038 FFFE1E9038F83FFC3901F007F849C65A495B1401C7485A4A5A4AC7FC141E5C5C5C495A49 5A495A49C8FC131E5B49131C5B4848133C48481338491378000714F8390FF801F0391FFF 07E0383E1FFFD83C0F5B00785CD8700790C7FC38F003FC38E000F021267BA422>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fz cmsy10 10 26 /Fz 26 111 df<007FB81280B912C0A26C17803204799641>0 D<121C127FEAFF80A5EA 7F00121C0909799917>I<0060150600F8150F6C151F007E153F6C157E6C6C14FC6C6CEB 01F86C6CEB03F06C6CEB07E06C6CEB0FC06C6CEB1F80017EEB3F006D137E6D6C5A90380F C1F8903807E3F0903803F7E06DB45A6D5B6EC7FCA24A7E497F903803F7E0903807E3F090 380FC1F890381F80FC90383F007E017E7F49EB1F804848EB0FC04848EB07E04848EB03F0 4848EB01F84848EB00FC48C8127E007E153F48151F48150F00601506282874A841>II<923803FF C0033F13FC4AB67E020715E0913A1FFE007FF8DA7FE0EB07FE4AC87ED903FCED3FC0D907 F0ED0FE0D90FC0ED03F049486F7E49CA7E017E177E498349834848EF0F80000319C04917 074848EF03E0000F19F049170148CC12F8A2001E1978003E197CA2003C193C007C193EA2 0078191EA300F8191FA248190FAA6C191FA20078191EA3007C193EA2003C193C003E197C A2001E1978001F19F8A26C6CEF01F06D1703000719E06C6CEF07C06D170F000119806C6C EF1F006D5F017E177E6D5F6D6C4B5A6D6C4B5AD907F0ED0FE0D903FCED3FC0D900FF03FF C7FCDA7FE0EB07FEDA1FFEEB7FF80207B612E002011580DA003F01FCC8FC030313C0484E 7BBB53>13 DII20 D<126012F812FEEA7F80 EA3FE0EA0FF8EA03FEC66C7EEB3FE0EB0FF8EB03FE903800FF80EC3FE0EC0FF8EC03FE91 3800FF80ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FC017 1FEF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0ED7FC04A48C8FCEC 07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CB FC12FC1270CCFCAE007FB81280B912C0A26C1780324479B441>I<020FB6128091B712C0 1303010F1680D91FF8C9FCEB7F8001FECAFCEA01F8485A485A485A5B48CBFCA2123EA25A A2127812F8A25AA87EA21278127CA27EA27EA26C7E7F6C7E6C7E6C7EEA00FEEB7F80EB1F F86DB71280010316C01300020F1580323279AD41>26 D<1478A414F85CA213015C130349 5AA2495A49CCFC5B137E5B485A485AEA0FE0003FBA12FEBCFCA2003F19FED80FE0CCFCEA 03F06C7E6C7E137E7F7F6D7E6D7EA26D7E1301801300A2801478A4482C7BAA53>32 D49 D<91381FFFFE91B6FC1303010F14 FED91FF0C7FCEB7F8001FEC8FCEA01F8485A485A485A5B48C9FCA2123EA25AA2127812F8 A25AA2B712FE16FFA216FE00F0C9FCA27EA21278127CA27EA27EA26C7E7F6C7E6C7E6C7E EA00FEEB7F80EB1FF06DB512FE010314FF1300021F13FE283279AD37>I54 D<007FB612F0B712F8A27EC91278B3A5003FB612F85AA27EC9 1278B3A5007FB612F8B7FCA26C15F0253A7CB92E>57 D<007FB712F8B812FCA27ECA123C B217182E177C9D37>I<156015F0A21401EB07F190383FFFE0EB7C1FEBF00748486C5AD8 03C07F4848487ED80F007FA248497E001E14BC153C003E143E141FA248EB1E1F143EA214 3CA2147C00FC1580147814F8A214F0A21301A214E01303A214C0A21307A21480A2130FA2 14005B007C1500131EA2D87E3E5BA2D83E3C133E137CA21378001F5C13F8000F14784913 F800075C0003495AEBE0033901F007802603FC1FC7FCEBFFFEEBC7F0D807C0C8FCA25BA2 6CC9FC21477CBF2A>I86 D<0060161800F0163CB3B26C167CA2007C16F8A26CED 01F0003F15036C6CEC07E06C6CEC0FC0D807F0EC3F80D803FE903801FF003A00FFC00FFC 6DB55A011F14E0010391C7FC9038007FF82E347CB137>91 DI102 D<12FCEAFFC0EA07F0EA01FCEA007E7F80131F80130FB3 A7801307806D7E6D7EEB007EEC1FF0EC07F8EC1FF0EC7E00495A495A495A5C130F5CB3A7 131F5C133F91C7FC137E485AEA07F0EAFFC000FCC8FC1D537ABD2A>I<14C0EB01E01303 A214C01307A21480130FA2EB1F00A2131E133EA25BA2137813F8A2485AA25B1203A25B12 07A2485AA290C7FC5AA2123EA2123C127CA2127812F8A41278127CA2123C123EA27EA27E 7FA26C7EA212037FA212017FA26C7EA21378137CA27FA2131E131FA2EB0F80A2130714C0 A2130314E0A21301EB00C0135278BD20>I<126012F07EA21278127CA2123C123EA27EA2 7E7FA26C7EA212037FA26C7EA212007FA21378137CA27FA2131E131FA2EB0F80A2130714 C0A2130314E0A414C01307A21480130FA2EB1F00A2131E133EA25BA2137813F8A25B1201 A2485AA25B1207A2485AA290C7FC5AA2123EA2123C127CA2127812F8A25A126013527CBD 20>I<126012F0B3B3B3B3A91260045377BD17>I<126012F07EA21278127CA2123C123EA2 121E121FA27E7FA212077FA212037FA212017FA212007FA21378137CA2133C133EA2131E 131FA27F80A2130780A26D7EA2130180A2130080A21478147CA2143C143EA2141E141FA2 801580A2140715C0A2140315E0A2140115F0A2140015F8A21578157CA2153C153EA2151E 150C1F537BBD2A>110 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: FA cmbx12 14.4 56 /FA 56 123 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03 F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949 4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E 007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D D34E>11 D45 DI<913803FFC0023F13FC91B6FC010315C0010F018113F0 903A1FFC003FF849486D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C8 13F0A34817F8A24817FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D 15FFA26C17F8A36C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495A D91FFCEB3FF8903A0FFF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD 43>48 D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3 B3A6007FB712FEA52F4E76CD43>II<91380FFFC091 B512FC0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E49 1680D807FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C 13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0 030113F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0 EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C 484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FC D9001F1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216FF5D 5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C14 7E147C5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A90C8 FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>III<121F7F7FEBFF8091B81280A45A1900606060A2606060485F0180C8 6CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E 4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A2140FA25D141FA2143FA414 7F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I<913807FFC0027F13FC0103B67E 010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0FFE49C76C7E48488048486E1380 000717C04980120F18E0177FA2121F7FA27F7F6E14FF02E015C014F802FE4913806C7FDB C00313009238F007FE6C02F85B9238FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D80 6D81010F15E06D81010115FC010781011F81491680EBFFE748018115C048D9007F14E048 48011F14F048487F48481303030014F8484880161F4848020713FC1601824848157F173F A2171FA2170FA218F8A27F007F17F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF80 6C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FC D9000F13C0364F7ACD43>I<91380FFF8091B512F8010314FE010F6E7E4901037F90267F F8007F4948EB3FF048496D7E484980486F7E484980824817805A91C714C05A7013E0A218 F0B5FCA318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387F F803011FB512E36D14C30103028313F89039007FFE03EC00401500A218F05EA3D801F816 E0487E486C16C0487E486D491380A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48 495BD803FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0 364F7ACD43>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C808304 7F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F8116 8083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D844AB87E A24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A820107 85A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 DI<932601FFFCEC01C0047F D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7 383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982 4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2 98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D 606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D 6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F 93C8FC030715FCDB007F14E0040101FCC9FC525479D261>IIII<9326 01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003 EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249 49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D 5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03 0703FC1307DB007F02E01301040149CAFC5B5479D26A>III75 DIII<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF 020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949 6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348 1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C 1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D 4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F 01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265> II82 D<91260FFF80130791B500F8 5B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC48 48C87E48488149150F001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93 C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C83 6D826D82010F821303010082021F16801400030F15C0ED007F040714E01600173F050F13 F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01 FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48 C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038 C0007F49C71607D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A 07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>II87 D97 DI<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001 FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48 92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC 3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC 020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91 B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980 485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C 6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9 003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901 817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191 C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01 F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE 903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I103 DI<137F497E000313E0487FA2487FA76C5B A26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I< 157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E13E002001380ED7F0092C7FCADED 1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E487E486C13FF16F0A216E05C16C0 4A13806C4848130049485A003F495A000FB512F06C5C0001148026001FFCC7FC256C87D3 29>I108 DII<913801FFE0021F13FE91B6 12C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F4849 6D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3 003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE 011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I< 903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9 FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A 0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FB FE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I< 90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013 FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612 FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307 D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15 F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F0307 13F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC 7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB6 35>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FC A426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEB FFF86D6C5B021F5B020313802A4D7ECB34>IIII<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D 495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06E EBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03 F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A4948 6D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>II<001FB8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B 495B4B5B48C75C5D4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93 C8FC91B5FC495B5D4949EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C 485E485B4A5C48495B4815074849495A91C712FFB8FCA37E31357CB43C>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: FB cmtt10 10 87 /FB 87 128 df<121C127FEAFF80B1EA7F00AF123EC7FCA8121C127FA2EAFF80A3EA7F00 A2121C09346FB32C>33 D<003C131E007F137F481480A66C1400A6007E7FA6003E133EA3 003C131E001C131C191977B32C>I<010F133C90381F807EA8013F13FE4A5AA4007FB612 F0B712F8A4003F15F03A007E01F800A5EBFE0301FC5BA6003FB612F0B712F8A46C15F03A 01F807E000A30003130F01F05BA86C486C5A25337DB22C>IIIII<143814FC13011303EB07F8EB0F F0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A127EA3 12FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80EB1F C0EB0FF0EB07F8EB03FC130113001438164272B92C>I<127012FC7E7E6C7E6C7EEA0FE0 6C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314FC13 00AC130114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A485A48 5A485AEA3FC0485A48C7FC5A5A1270164279B92C>II<147814FCAF007FB612F0B712F8A46C15F0C700FCC7FC AF147825267DAB2C>II<007FB6FCB712 80A46C150021067B9B2C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B70 8A2C>I<1507ED0F80151FA2153F16005D157E15FE5D14015D14035DA214075D140F5D14 1F5D143F92C7FC5C147E14FE5CA213015C13035C13075C130F5C131F5CA2133F91C8FC5B 137E13FE5B12015B12035B12075BA2120F5B121F5B123F90C9FC5A127E12FE5AA25A1278 21417BB92C>II<1307497EA2131FA2 133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14E0 1C3477B32C>IIII<000FB512 FE4880A35D0180C8FCADEB83FE90389FFF8090B512E015F8819038FE03FE9038F000FF01 C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C127EB4FC150F16C0A248141F00 7EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C5C000114C06C6C90C7FCEB0F F823347CB22C>II<1278B712 C016E0A316C000FCC7EA3F80ED7F0015FE00785CC712014A5A4A5A5D140F5D4A5A143F92 C7FC5C147E14FE5C13015CA2495AA213075CA3495AA4495AA5133F91C8FCAA131E23357C B32C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0 EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>58 DI<1507ED1F80153F15FF1403 4A1300EC1FFC4A5AECFFE0491380010790C7FCEB0FFCEB3FF8EB7FE048485A4890C8FCEA 0FFEEA1FF8EA7FF0EAFFC05BA27FEA7FF0EA1FF8EA0FFEEA03FF6C13C06C6C7EEB3FF8EB 0FFC6DB4FC01017F6D13E0EC3FF86E7EEC07FF6E13801400153F151FED0700212A7BAD2C >I<007FB612F0B712F8A4003F15F0CAFCA8003FB612F0B712F8A46C15F025147DA22C>I< 127012FC7E6C7E13E06C7EEA1FFC6C7E3803FF80C67FEB7FF0EB1FF8EB0FFEEB03FF6D13 C06D6C7EEC3FF8EC0FFC6EB4FC0201138080A25C02071300EC0FFCEC3FF8EC7FE049485A 4990C7FCEB0FFEEB1FF8EB7FF0EBFFC000035BD80FFEC8FC485AEA7FF0485A138048C9FC 5A1270212A7BAD2C>I<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C39038 1F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880A29038F8003FA34848EB 1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>65 D<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0 A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501 ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016C0B712806CECFE 0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FFEBFF813901FE00 7F4848131FD807F0130F1507485A491303485A150148C7FCA25A007EEC00F01600A212FE 5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F 6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F00100138025357DB32C>I<007F B5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F01503 16F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC 03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712F8A37E3903F000 01A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB6 12FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7FCA716781600A5 15F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26337EB22C>I<90 3901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC01497E4848137F4848 133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA8913803FFF84A13 FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F6C7E6C6C13FF6D 5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB32C>II<007FB512F8B612FCA36C14F839000FC000B3B3A5 007FB512F8B612FCA36C14F81E3379B22C>I<0107B512804914C0A36D148090390003F0 00B3AF1218127EA2B4FCA24A5A48130F007F131F9038C07FC06CB55A6C91C7FC6C5B0003 13F838007FC022347BB22C>I<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A800 7FB6FCB7FCA36C15F025337DB22C>76 DIII<007FB512C0B612F88115FF 6C15802603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED 3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>I< 387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4B C7FCEC01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D8 7FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>82 D<90381FF80790B5EA0F 804814CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC 0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F 9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC 1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC2335 7CB32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA2 497F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F8 00B3AF6D130300015DA26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B 010313F86D5B9038003F802B3480B22C>III<3A3FFF03FFE0484913F0148714076C6D13E03A01F800FE007F000049 5A13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7FCA26D5AA26D 5AA2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01017E7FEBFE00 497F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15FC497E27337E B22C>II<003FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A003C5CC71203 4A5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA2495A49C8FCA213 FE485AA24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C15C023337CB2 2C>I<387FFFFCB512FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17416FB92C>I<12 7812F87EA27E127E127F7E7F121F7F120F7F1207A27F12037F12017F12007F137E137F7F 80131FA280130F801307801303801301801300A280147E147F8081141F81140F81140781 1403A281140181140081157E157F811680151FA2150FED070021417BB92C>I<387FFFFC B512FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC17417DB92C>I<130EEB3F80EBFFE0 000313F8000F13FE487FD87FF113C0D8FFE013E0EB803F38FE000F007CEB07C00030EB01 801B0C78B22C>I<007FB6FCB71280A46C150021067B7D2C>I<137013F812011203EA07F0 EA0FE0EA1FC01380EA3F00123E127E127CA212FC5AA4EAFF8013C013E0A2127FA2123FEA 1FC0EA0F800D1B71B82C>I<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC 01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7F C090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A 003FF007FC27247CA32C>II<903803FFE0011F13F8017F13FE48B5FC48804848C6 FCEA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E 6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C> IIIIII<1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC 7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3 EC3F80A2EC0E0091C7FCA748B512804814C0A37EC7120FB3B3A2141F003C1480007E133F B414005CEB01FEEBFFFC6C5B5C001F5B000790C7FC1A467CB32C>II<387FFFE0B57EA3 7EEA0003B3B3A5007FB61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC 1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001 E013C0A301C01380B33B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F 2D2481A32C>I<397FF01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80EC C01F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C> II<397FF01FE039FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE0 91380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB 07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387F FFE0B57EA36C5B27367FA32C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814 FF3807FE07380FF00148487E49137F4848133F90C7FC48141F127E150F5AA87E007E141F A26C143F7F6C6C137F6D13FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F8 90C7FCAD0203B5FC4A1480A36E140029367DA32C>II<90387FF8700003B512F8120F5A5A387FC00F387E 00034813015AA36CEB00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F8 010113FCEB0007EC00FE0078147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC 90B5FC15F815E000F8148039701FFC0020247AA32C>I<131E133FA9007FB6FCB71280A3 6C1500D8003FC8FCB1ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001035B 6D13F89038003FE0232E7EAD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000FB3A3 151FA2153F6D137F3900FE03FF90B7FC6D15807F6D13CF902603FE07130029247FA32C> I<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B0000 143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C70107 5BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>II<3A3FFF03FFF048018713F8A36C010313F03A00FC007E005D90 387E01F8013F5BEB1F83EC87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14 FE130180903803EF80903807CFC0EB0FC7EC83E090381F01F0013F7FEB7E00017C137C49 137E0001803A7FFF01FFFC1483B514FE6C15FC140127247EA32C>I<3A7FFF01FFFCB500 8113FE148314816C010113FC3A03E0000F806C7E151F6D140012005D6D133E137C017E13 7E013E137CA2013F13FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75D EB00FFA292C7FC80A2143EA2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F 495A387FFF806C90C8FC6C5A6C5AEA07E027367EA32C>I<003FB612E04815F0A4007EC7 EA1FE0ED3FC0ED7F80EDFF004A5A003C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC49 5AEB0FF0495A495A495A49C8FC4848EB01E04848EB03F0485A485A485A485A485AB7FCA4 6C15E024247DA32C>I<127812FCB3B3B3A9127806416DB92C>124 D<01F81370D803FE13F8380FFF0148138748EBCFF0397F9FFFE0D8FF0F13C0D8FC071380 39F803FE00387000F81D0A79B22C>126 D<003C131E007E133FB4EB7F80EB80FFA3EB00 7F007EEB3F00003C131E190977B32C>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: FC cmbx10 10 67 /FC 67 123 df<913A03FF8007FE027F9039F07FFF800103B500FDB512E0010F903A00FF FE0FF0D93FF8ECF81F90267FE0019038F03FF849485A4816E014804816C00200ED1FF081 F007C06F91C7FCA8B912E0A4000390C701C0C7FCB3ABB5D8FC3FEBFF80A43D3A7EB938> 11 D<0470EB038004F8497EA30301140F4C5CA20303141F4C91C7FCA303075C4C133EA2 030F147E4C137CA3031F14FC93C75AA34B1301033E5CA2007FBA12F0BB12F8A36C19F0C7 2801F0000F80C7FCA30203141F4B91C8FCA302075C4B133EA3020F147E4B137CA3007FBA 12F0BB12F8A36C19F0C7277C0003E0C8FCA202FC13074A5CA30101140F4A5CA20103141F 4A91C9FCA201075C4A133EA3010F147E4A137CA2011F14FC91C75AA3010E1470454A7BB9 50>35 D39 D<141C143C14F8EB01F0EB03E01307EB0FC0EB1F8014005B137E13FE5B12015B1203A248 5AA2120F5B121FA25B123FA4485AA512FFB1127FA56C7EA4121F7FA2120F7F1207A26C7E A212017F12007F137E7F7F1480EB0FC0EB07E01303EB01F0EB00F8143C141C165377BD25 >I<12E07E127C7E7E7F6C7E6C7E12037F6C7E7F12007F137E137FA2EB3F80A214C0131F 14E0A2130F14F0A4EB07F8A514FCB114F8A5EB0FF0A414E0131FA214C0133F1480A2EB7F 00A2137E13FE5B12015B485A5B1207485A485A90C7FC123E5A12F05A16537BBD25>II44 DII<49B4FC010F13E0 017F13FC9038FF83FE4848C67E4848EB7F804848EB3FC04848EB1FE0A2001F15F0A24848 EB0FF8A3007F15FCA500FF15FEB3007F15FCA4003F15F8A26D131F001F15F0A2000F15E0 6D133F000715C06C6CEB7F806C6CEBFF003900FF83FE6DB45A011F13F0010190C7FC2738 7CB630>48 D<141E143E14FE1307133FB5FCA313CFEA000FB3B3A6007FB61280A4213779 B630>IIII<001C15C0 D81F80130701F8137F90B61280A216005D5D15F05D15804AC7FC14F090C9FCA8EB07FE90 383FFFE090B512F89038FC07FC9038E003FFD98001138090C713C0120EC813E0157F16F0 A216F8A21206EA3F80EA7FE012FF7FA44914F0A26C4813FF90C713E0007C15C06C5B6C49 1380D9C0071300390FF01FFE6CB512F8000114E06C6C1380D90FF8C7FC25387BB630>I< EC0FF8ECFFFE0103EBFF8090390FF80FC090393FE003E090397FC001F09038FF000F48EC 1FF84848133F485A120F5B121FA2003FEC1FF0ED0FE04990C7FC127FA21408EC7FF039FF F1FFFC01F313FFD9F78013809039FF007FC049EB3FE04914F0ED1FF85B16FCA34914FEA5 127FA5123F16FCA26C7E16F8000F143F6C6C14F0ED7FE06C6C14C03A01FF81FF806C90B5 1200013F13FC010F13F00101138027387CB630>I<123C123EEA3FE090B71280A4170048 5D5E5E5EA25E007CC7EA0FC000784A5A4BC7FC00F8147E48147C15FC4A5A4A5AC7485A5D 140F4A5A143F92C8FC5C147E14FE1301A2495AA31307A2130F5CA2131FA5133FA96D5A6D 5A6D5A293A7BB830>I<49B47E010F13F0013F13FC9038FE01FF3A01F8007F804848EB3F C04848EB1FE0150F485AED07F0121FA27FA27F7F01FEEB0FE0EBFF809138E01FC06CEBF0 3F02FC13809138FF7F006C14FC6C5C7E6C14FE6D7F6D14C04914E048B612F0EA07F84848 6C13F8261FE01F13FC383FC007EB8001007F6D13FE90C7123F48140F48140715031501A2 1500A216FC7E6C14016D14F86C6CEB03F06D13076C6CEB0FE0D80FFEEB7FC00003B61200 C614FC013F13F00103138027387CB630>II<007FB912FCBA12 FEA36C18FCCDFCAF007FB912FCBA12FEA36C18FC3F197BA04A>61 D65 DIIIIIIII75 DIIIII82 DI<003FB91280A4D9F800EBF003D87FC092 38007FC049161F007EC7150FA2007C1707A200781703A400F818E0481701A4C892C7FCB3 AE010FB7FCA43B387DB742>IIII89 D<003FB712FEA4913980007FFC01 FCC7EAFFF801F05B01C015F0494913E090C75A4816C0007E4A13805D007C16004B5A157F 00785D4B5A5C5EC7485B5C5E5C4A5B93C7FC5C4A5A5D14FF495B5D5B495B4B131E5B5D49 90C7FC5B5C4948143E13FF5C485B48167E4A147C484914FC5A4A13014890C7120348150F 49143F4848EB01FFB8FCA42F397BB83A>I97 D<13FFB5FCA412077EAF4AB4 7E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC00280EB3FE091C713F0EE1FF8A2 17FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE06E14C0903AFDF001FF80903A F8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A7EB935>I<903801FFC0010F 13FC017F13FFD9FF8013802603FE0013C048485AEA0FF8121F13F0123F6E13804848EB7F 00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6CEB07C06C6C14806C6C131FC6 9038C07E006DB45A010F13F00101138023257DA42A>II<903803FF80011F13F0017F13FC3901FF83FE 3A03FE007F804848133F484814C0001FEC1FE05B003FEC0FF0A2485A16F8150712FFA290 B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F000071403D801FFEB0FE06C90 38C07FC06DB51200010F13FC010113E025257DA42C>II<161FD907FEEBFFC090387FFFE348B6EAEF E02607FE07138F260FF801131F48486C138F003F15CF4990387FC7C0EEC000007F81A600 3F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F86D13E0261E07FEC8FC90CAFC A2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C815A001F81393FC0000F48C813 8048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001B612 C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA412077EAFED7FC0913803FFF8020F 13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291C7FCB3A3B5D8FC3F13FFA430 3A7DB935>II<13FFB5FCA412077EAF92380FFFE0A4923803FC0016F0 ED0FE0ED1F804BC7FC157E5DEC03F8EC07E04A5A141FEC7FE04A7E8181A2ECCFFEEC0FFF 496C7F806E7F6E7F82157F6F7E6F7E82150F82B5D8F83F13F8A42D3A7EB932>107 D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FED97FE0EB0FFC00FF902601 FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00903887801F000749DA CF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB50083B512F0 A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C0113800007 13780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435>I<903801 FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D7EA2003F81 491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A6C 6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039FF01FF80B500 0F13F0023F13FC9138FE07FFDAF00113800007496C13C06C0180EB7FE091C713F0EE3FF8 A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0DAF003138091 39FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357EA435>I<9038 FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138807F80ED3F 00150C92C7FC91C8FCB3A2B512FEA422257EA427>114 D<90383FF0383903FFFEF8000F 13FF381FC00F383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C13FCEC FF806C14C06C14F06C14F81203C614FC131F9038007FFE140700F0130114007E157E7E15 7C6C14FC6C14F8EB80019038F007F090B512C000F8140038E01FF81F257DA426>I<130F A55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80F01481 6CEBC3E090383FFFC06D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFFA40007 14016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F00103138030 257DA435>IIIII<003FB612 C0A3D9F0031380EB800749481300003E5C003C495A007C133F5D0078495A14FF5D495B5B C6485B92C7FC495A131F5C495A017FEB03C0EBFFF014E04813C05AEC80074813005A49EB 0F80485A003F141F4848133F9038F001FFB7FCA322257DA42A>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: FD cmr10 10 92 /FD 92 128 df11 DIII<133C137EA213FE1201EA03FC13F0EA07E0EA0FC0EA1F80EA 1E005A5A5A12C00F0F6FB92A>19 D<121C127FEAFF80A8EA7F00AB123EAB121CABC7FCA8 121C127FEAFF80A5EA7F00121C093C79BB17>33 D<001C131C007F137F39FF80FF80A26D 13C0A3007F137F001C131C00001300A40001130101801380A20003130301001300485B00 061306000E130E485B485B485B006013601A197DB92A>I<030C1303031E497EA2033E13 0FA2033C91C7FCA2037C5BA20378131EA303F8133EA24B133CA20201147CA24B1378A202 0314F8A24B5BA302071301007FB91280BA12C0A26C1880C7271F0007C0C7FC021E5CA302 3E130FA2023C91C8FCA2027C5BA20278131EA302F8133E007FB91280BA12C0A26C188028 0003E000F8C8FC4A5BA301071301A202805BA2010F1303A202005BA2491307A2011E5CA3 013E130FA2013C91C9FCA2017C5BA20178131EA20130130C3A4A7BB945>I<141FEC7FC0 903801F0E0903803C0600107137090380F803090381F00381518A25BA2133E133F153815 30A215705D5D140190381F838092CAFC1487148E02DC49B51280EB0FF85C4A9039003FF8 000107ED0FC06E5D71C7FC6E140E010F150CD91DFC141C01391518D970FE143801E01530 2601C07F1470D803805D00076D6C5BD80F00EBC00148011F5C4890380FE003003E6E48C8 FC007E903807F8060203130E00FE6E5A6E6C5A1400ED7F706C4B13036F5A6F7E6C6C6D6C 5B7013066C6C496C130E6DD979FE5B281FF001F07F133C3C07F80FE03FC0F86CB539800F FFF0C69026FE000313C0D91FF0D9007FC7FC393E7DBB41>38 D<121C127FEAFF80A213C0 A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A1979B917>I<1460 14E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A12 1EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A2 7F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C 7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07 C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E 5A5A5A5A5A13527CBD20>I<15301578B3A6007FB812F8B912FCA26C17F8C80078C8FCB3 A6153036367BAF41>43 D<121C127FEAFF80A213C0A3127F121C1200A412011380A21203 13005A1206120E5A5A5A12600A19798817>II<121C127FEAFF80 A5EA7F00121C0909798817>I<150C151E153EA2153C157CA2157815F8A215F01401A215 E01403A215C01407A21580140FA215005CA2141E143EA2143C147CA2147814F8A25C1301 A25C1303A2495AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A2 5B1203A25B1207A25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601F 537BBD2A>IIIII<15 38A2157815F8A2140114031407A2140F141F141B14331473146314C313011483EB030313 071306130C131C131813301370136013C01201EA038013005A120E120C5A123812305A12 E0B712F8A3C73803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780133C90 38F003F890B5FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F8039 07E007E090388003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C71300 485C12E000605C12700030495A00385C6C1303001E495A6C6C485A3907E03F800001B5C7 FC38007FFCEB1FE0213A7CB72A>II<12301238123E 003FB612E0A316C05A168016000070C712060060140E5D151800E01438485C5D5DC71201 4A5A92C7FC5C140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3133F A5137FA96DC8FC131E233B7BB82A>III<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A3 17>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A41203 1300A25A1206A2120E5A121812385A1260093479A317>I<007FB812F8B912FCA26C17F8 CCFCAE007FB812F8B912FCA26C17F836167B9F41>61 D63 D<1538A3157CA315FEA34A7EA34A6C 7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003 A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121FA249 6E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C 7DBB3E>65 DI<913A01FF800180020FEBE003027F13F8903A01FF80 7E07903A03FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F1201 4848151F4848150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6D ED0180A3123F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D 6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002 011380313D7BBA3C>IIIIIII<013FB512E0A39039001FFC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A 1380D87F005B0070131F6C5C6C495A6C49C7FC380781FC3801FFF038007F80233B7DB82B >IIIIIIIIII<003FB812E0A3D9C003EB001F273E00 01FE130348EE01F00078160000701770A300601730A400E01738481718A4C71600B3B091 3807FF80011FB612E0A335397DB83C>IIII<007FB590383FFFFCA3C601F8 01071380D97FE0D903FCC7FC013FEC01F06D6C5C5F6D6C5C6D6C13034CC8FC6D6C130616 0E6D6C5B6DEB8018163891387FC0306E6C5A16E06E6C5A91380FF18015FB6EB4C9FC5D14 036E7EA26E7F6F7EA24B7E15DF9138019FF09138038FF8150F91380607FC91380E03FE14 0C4A6C7EEC38000230804A6D7E14E04A6D7E49486D7E130391C76C7E01066E7E130E010C 6E7E011C1401013C8101FE822607FF80010713E0B500E0013FEBFF80A339397EB83E>I< B500FE91383FFFE0A3000301E0913807FE00C649EC03F0017F6F5A606D6C5D6D6C140395 C7FC6D6C1406A26D6C5C6D6C141C17186D6C143817306D6D5B6E6C13E05F91383FE0015F 91381FF003DA0FF890C8FC1606913807FC0E160C913803FE1C913801FF185E6E13B016E0 157F6F5AB3A24B7E023FB512C0A33B397FB83E>I<003FB7FCA39039FC0001FE01C01303 49495A003EC7FC003C4A5A5E0038141F00784A5A12704B5A5E006014FF4A90C7FCA24A5A 5DC712074A5AA24A5A5D143F4A5AA24A5A92C8FC5B495AA2495A5C130F4948EB0180A249 5A5C137F495A16034890C7FC5B1203485AEE0700485A495C001F5D48485C5E4848495A49 130FB8FCA329397BB833>II<3901 800180000313033907000700000E130E485B001813180038133800301330007013700060 1360A200E013E0485BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F80390E00 0E001A1974B92A>II<1310133813 7C13FE487E3803C780380783C0380F01E0381E00F04813780070131C48130E0040130417 0D77B92A>I96 DIIIII<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7 FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>IIIIIII<2703F00F F0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F80 2603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B5 0083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800F C03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>II<3903F01FE000FFEB7FF89038F1E07E9039F3801F803A0FF7000FC0D803FE EB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F0 6D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487E B512C0A328357EA42E>II<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707 EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>II<1318A51338 A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C 03017E13006D5AEB0FFEEB01F81A347FB220>IIIIII<003FB512FCA2EB8003D83E0013 F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C6485A49 5AA2495A495A495AA290387F000613FEA2485A485A0007140E5B4848130C4848131CA248 48133C48C7127C48EB03FC90B5FCA21F247EA325>III126 D<001C131C007F137F39FF80FF80A5397F007F00 001C131C190978B72A>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: FE cmbx12 24.88 36 /FE 36 128 df[<96261FFFFE93383FFFC0061FB600F0020FB512F84DB700FE91B612FE 051F9326FF80076F7E94B9D8E01F16E00407DEF87F82041F06FDB87E047F9126FC000F90 B6D8FC037F4BB600800100DCC0077F030702F8C8003FDB000F7F4B02E092B600FC5B033F 02804A4B16804B49C804E05B92B5484B5D4A02F04B4D14C04A4A614A4A4B92C7FC4A5C66 4A91C9FC4A5B664A49761480A27571140091B5506E5B4C827B5B75050113F0759438007F C09FC8FCB3A4C212FCA9C702FCCA02FCCBFCB3B3B3B3A2003FB800F0013FB9FCA9>146 144 123 271 136 11 D[158 145 120 272 175 65 D[143 142 120 269 165 I[<0803B500C0EE01F00703B600FEEE03F8077FDBFFE015070607B800FC150F 063F05FF151F4DBA00E0143F050F07F8147F053F07FE14FF94BC5B04039326F8000FECC0 03040F4BC86CEBF007043F03C0030F6D5A93B648C900036D5A4B03F09339007FFF3F0307 03C0051F90B5FC4B92CB7E033F02FC18034B02F08492B648844A0380193F4A92CD7E4A4A 864A4A864A02F0864A4A864A8991B65A494B874992CF7E4C885B494A885E498B494A88A2 495C8D90B65A8D5A5E48217FA24892D1FC223FA25A5DA248211FA3485CFA0FF09FC7FCA2 5AA45DA3B6FCB27EA381A47EA46C80FA07F0FA0FF87EA2817EA36C6F1D1F23F07E827E22 3F6D6E1EE0A26D6E1D7F23C06D6E1DFF7F705213806D806D55130070646D6F646D6F515A 6E6E1B1F6E6E515A6E6E515A6E6E1BFF6E6E505B6E6E505B6E6F4F5B6E03E04F90C7FC6F 6EF13FFE6F02FC4F5A030F02FF4E485A6F03C005075B030103F0051F5B6F03FE057F1380 043FDAFFE00303B5C8FC040F03FE033F13FC0403DBFFF80107B55A040093B812E0053F1A 80050F4FC9FC050119F8DD003F18C0060795CAFCDE007F16F0070393CBFCDF000314C0> 141 146 115 271 168 I[156 142 120 269 178 I[138 141 120 268 153 I[127 141 120 268 146 I[74 142 122 269 87 73 D[121 142 120 269 140 76 D[137 142 120 269 159 80 D[<93260FFFF8163E4BB600E0153F 031F03FE5D037FDBFFC05C0203B800F05B020F05FC5B4A05FF5B027FF0C00F91B526FE00 0FECF01F010302C0D9007F6D5A4991C800076D5A4901FC030090B6FC4901F0163F494916 0F4901808290B5170192CBFC4849844849181F87484984A2484984874886A248498588A2 4887A388A2B58680A36E85A280A26E8580A2818103F0725A6C6E96C7FC15FE8116E06C15 FEEEFFE017FF6C17F0F0FF806C18F8F1FFC06C19FCF2FF806C1AE01BF86C1AFE6C747E6D 1AE0886D866D866D1AFF6D876D87010087806E86020F86020386020086153F030F851501 DB001F19801601DC000F18C0EF007F060717E0F0003F070316F0F1003F1A0F080315F81A 00871B1F877514FCA287007F86486C85A288A388A36D86A31EF87FA37F1EF0A26D626D1C E0A27F6D5013C0A26E1B806E96B5FC6E1B0002F8606E4E5B6E626E6C5F03E04D5B03F84D 5B03FE057F5BDBFFC093B55A04F803035C496CD9FF80021F91C7FCD9FC1F02FF49B55AD9 F80792B75A496C19F049C66149011F18804901074DC8FC90C817F848031F16C048030003 FCC9FC007C04011480>102 146 115 271 129 83 D[<000FC312F8A6488EA304C0C700 1F4AC7120103F8C8F0000F03C01C0192C9737E02FC1E1F4A1E0702E08A4A8A4A8A4890CA 757EA249203F49201FA349200FA2492007A4492003007F8EA4498CA848487A1380A6CC99 C7FCB3B3B3B3AA030FBD12FCA9>145 140 120 267 162 I[229 144 123 269 240 87 D<93B512FC037FECFFF00207B8FC023F17E091B912F84918FE0107727E499126C000 7F14E04901E0C7000F80496D020380496D020014FE6F6F7F90B570806F6F8085486E6F80 7380A27380A28885886C5CA26D4982886D5B6D5B010713C0010190CAFC90CCFCA90603B7 FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F020FEDE000023F02FCC7FC91B612 E0010392C8FC4914FC011F14F04914C0495C90B548C9FC485C485C485C485C5A5D485CA2 4891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E150F6F16CF6C183F6FDB7F8F806C 6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791B5FC6C6E6CD93FF817806C923AF8 03FFF003013F91B6487E010FEF8000010394C77E010004FC141F021F03F0140702010380 DA007F1400DA000701F8CDFC695F79DD71>97 D[113 144 121 270 129 I<94387FFFF0041FB612E093 B712FE0307707E031F17F092B97E4A18FE020784021F9126F8000F14804A0280010014C0 4A49C74814E049B500F85C494A17F0494A5C495C494A4A14F84991C8FC5D495B90B5FC5D 5A485C7314F05A4B6F14E05A7314C0487214804B93383FFE00F20FF84896C8FCA4485CA5 B6FCB07EA281A37EA36C80A37E6F18FE6CF201FFA26C6E5F1CFE6C801B076C6EEF0FFC6D 7F70EE1FF86DF13FF06D6E167F6D6EEEFFE06D02F84B13C06D6E5D6D02FF030F13806D03 C0023F1300023F02F0903801FFFC6E9126FF801F5B020792B65A6E18C0020060033F4CC7 FC030716F8030016C0041F4AC8FCDC007F13C0585F78DD67>I[113 144 120 270 129 I<94387FFFC0040FB6FC93B712E00307 16FC031F16FF037F17C04AB912F00207DAF80380021F912680003F13FE4A49C7000F7F4A 01F802038049B5486E804902C06E6C7F494A6F7F4991C9FC49727F4949707F4B84498490 B548707F5A4B198048855D481CC086481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392 BBFCA51DF00380CDFCA77EA4817EA37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F0 6C1B3F6D6DF07FE06D7FF4FFC06D6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A 6D6C01FFEEFFF86E02E002035B6E02FC021F5B02079126FFC003B55A6E92B7C7FC020060 033F17F8030F17E003011780DB003F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A> I103 D[114 143 119 270 129 I[49 144 119 271 65 I[65 185 140 271 71 I[112 143 121 270 123 I[50 143 119 270 65 III<94381FFFF00407B612C0 047F15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02C0010714E04A49 C880027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C80494970804949 717F49874949717FA290B548717F48884B83481D80A2481DC04B83481DE0A2481DF0A348 4A7114F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1DE06F5F6C1DC0A2 6C6E4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E4B5C6D6E4B5C6D 02F0031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC017F5C020791B8 12C0020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715C0DC001F01F0CA FC675F7ADD74>II114 D<92261FFFF814F80203B638C001FC023FEDFC0791B8121F010317 FF130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F484915034849814890CAFC19 7F4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93C8FC14FC14FF15 F06CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C846C727E6C856D 84011F846D841303010084023F83140F020183EC001FDB007F16801603DC000F15C01700 183F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B806D5F7F1B006E 5E6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF0107B55A01F991B7 C7FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8007C020349C9FC 4B5F78DD5C>I[72 132 124 258 90 III<007FB86C49B712FEA9C792C9000F02C0C7FC6E6E 030101F0C8FC715F6E6E4B5B6E6E4B5B6E4E90C9FC6E6E5E71151F6E6E4B5A6E6E4B5A6E 4E5A6F6E495B72495B6F6E495B6F806F6E4990CAFC6F4C5A72495A6F6E495A6F6E495A6F 03815B705E7014C307E75B7091B5CBFC705D705D705D6282705D715C8386718071807180 837180864D814D815F4D81874D814D81DDFFF3804C13E14C01C1804C0180814E6C804C6E 804C487F4C48824C486D804C486D804B496D804B497F73804B49834B90C86C804B486F80 4B48814B486F804B48844C6F804A71804A496F804A49814A90CA814A487180023F728001 0FB500E07080B8031FB812E0A9735C7CDB7B>120 D<007FB800C04AB71280A9D800034A CA000791C7FC6D080013F0775A6D6E4E5AA26E6E6064836E4F90C8FC836E4F5A836E4F5A A26E6E4C5AA26E6E5F1C3F6E6E5F1C7F836E4F5A846F4D5B846F4D90C9FCA26F6E4A5AA2 6F6E5D1B0F846F4D5A846F4D5A846F4D5AA26F6E4A5AA2706E5C627002C091CAFC6219E0 704B5A19F0704B5AA2706E485AA2706E485AA27002FE5B1A7F19FF704B5AA2715DA27192 CBFCA2715CA2715CA3715CA2715CA2715CA2715CA2725BA27290CCFCA3725AA2725AA24E 5AA24E5AA261187FA24E5AA24D5B13FE2603FF804A90CDFC000F13E0486D4A5A487F486D 4A5AA260B56C141F4D5AA24D5A17FF604C5B4A4990CEFC6C5D4C5A6C49EB3FFC4A495A6C 4948485A9026FE80075B270FFFC03F5B6C90B6CFFC6C5D6C15F86C6C5C011F14C0010749 D0FC9038007FE071857CDB7B>I[73 28 107 271 116 127 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: FF cmbx9 40 15 /FF 15 118 df[58 118 100 358 109 39 D46 D[<98B512FC087FECFFF8070FB812C096B912FC0607F0 FF80063F19F04DBB12FE0507747E051F1BE0057F1BF84CBD12FE0407767E4C89043F9326 F8007F16F04C93C700038293B700F8DA007F81030304E0031F15FF4B04800307824B4BC9 0001824B4B70824B03F0053F814B4B718192B74871814A4C71814A93CB6C814A4B72824E 844A4B73814A8D4A4B73814E854A8D91B7487381A2494C7381A2498E95CD7E498FA2494B 7482A2498FA2498FA2494B7482A390B78CA348A17EA24D8748A17EA348A11380A448A113 C0A548A113E0A34D87A248A113F0A848A113F8ACB821FCB3B3A46CA113F8AC6CA113F0A3 7163A46CA113E0A66CA113C0A46CA11380A37198B8FC6CA11300A46CA15AA36CA15A7162 6D6BA36D6BA26D6F505EA26D6BA26D704F5EA26DA0C7FC72616D6AA26D704F5D6E697261 6E6F4F5D6E697296B7FC6E6F4E5E6E6F4E5E6E704D93C8FC735F6E704D5D6E704D5D6F6F 4D5D6F6F94B75A6F03FF04035E030704C0030F16806F04F0033F93C9FC6F04FC92B75A6F DCFF8001075E043F04F8017F16F07093BA5A04071D80040152CAFC7064053F1BF0050F1B C0050150CBFC716C19F8060F19C0060006FCCCFC070F17C0DF007F03F8CDFC080002FCCE FC>166 222 113 345 197 48 D[140 218 99 345 197 I[205 228 114 355 236 76 D[342 228 113 355 373 I[273 232 114 355 302 85 D[<073FB67E067FB87E051FB912FC4CBB12E0041F1AFC047FF2FF804BBD12 E003071CFC031F1CFF037F1DC04ABF12F04A1EFC4A8A4A04FCC76C707E4A03F8C8000383 4A0380DB003F16F072040F824A6F04038291B76C708272706C8149768272718249768272 71828A788249707182A279818F8BA17E8BA17E8BA2A17E6D5E8BA17E6D5EA26D5E79826E 5D6E5D6E5D6E5D6E92CCFC6E5C020014F8033F13E0030790CDFC92CFFCA91F1F52BAFC09 07BBFC0807BCFC4FBDFC193F0603BEFC183F0503BFFC171F94C0FC1607043F1AE393BBEA 000303031980030F06E0C7FC033F4DC8FC92B912E0020395C9FC020F17F84A17C0027F94 CAFC91B812F84917E0495F4994CBFC495E4916F8495E495E90B85A485F4894CCFC5F485E 5F5A485EA25F5A5F5A5FA3B8FC94CDFCA467A46783A2677E7161677E7196B8FC71606C65 714E13EF6C704E836C704E01CF8171067F018F816C7194B517E06C714C020FEEFF8006F0 040701FEF0FFFE6C71041F496CF0FF806D04FE93B500F81AC06D706C020314F06D05F002 3F4A6C19E001079426FF8007B612C06D95B8487E010052C7FC6E5180021F09F080020751 800201098014076E6C4FC87E030F07F8030018C0030107E0161FDB001F95CA0001178004 0105F8DD0007EDFE00DC000F048095CBFCDD000702E0D2FC>179 153 117 278 191 97 D[<98B6FC087F15FE070FB812F096BAFC060F19E0067F19FC4DBC FC050F1BC0053F1BF094BD12FC04031CFF040F89043F1DE04C9326FC003F824BB8008001 0116FC4B04FCC8003F81030F04F00307814B04C00301824B93CA6C814B03FC718192B748 050F814A4C71814A04C071814A4C71814A93CCFC4A4B73804A77814A5D91B74873814978 81495E4E73815B494C7381A2494C73815B95CE815BA290B7487580A248A11280A2484C87 A2A113C05A8D484C1FE0A35AA27B15F0A25AA25FA25AA2A113F8A38DB8FCA294C1FCA8A1 13F0A2A113E0A1138005F0D3FCA67EA66C82A47EA46C82A37EA26C82A1EAFF80110313E0 6C5813F0836C5813F8A26D826B7F6D705213F0A26D70646D7099B512E0A26D705114C06D 68725114806D70636E6F5114006E70505B6E70626E7097B55A6E704F5C6E7007075C6E04 FE4F5C6E70073F5C6F04C095B65A6F70050392C7FC030F04F8050F5C6F04FF057F5C6F05 E00303B65A030005FC037F5D70DCFFF0011FB75A041F94BA128004079BC8FC701DFC0400 65053F1CE005071C80050151C9FCDD003F1AF806071AC006004FCAFC071F18F0070195CB FCDF000716E0E0000702F0CCFC>157 153 117 278 180 101 D[81 231 110 358 110 108 D[<4DB46C053FB5FC030FB6050FB612FE017FB8057FEDFF E0BA0403B812FC0B1FEFFF800B7F18E00A03BA12F80A0F19FE52850A7F1AC051BC7E5187 090F8751DB800F82519126F000018298B6C86C815002F86F825002E0150F500280865049 C96C82D800034E01F882D9003F4D4987020F4D01C0826E94B5488799CAFC6E048101FC83 0783498807875B5188078F4984079F5B98CCFC07BF8A62F1FFFC5085A262A1816262A362 A297CDFCA361A461A561B3B3B3B3A4BD00E0020FBC12FEB001F0CB000195CC121F>191 150 111 277 218 110 D[190 215 114 277 218 112 D[137 150 114 277 162 114 D[<067FB500E0ED0FE0057FB700C0EC3FF8040FB800FC14FF04 7F9426FFC0037F0303BAEAF80F031FF1FE3F037F96B6FC4ABEFC1407141F147F91BFFC49 04E0C7FC010703F8C81203490380ED007F4902F8CA120F4902E017010480717E4949CC7E 90B548190F484A854B85484A8548885D484A868A5A8A92CEFC5A8AA25AA28A81B6FC81A2 81816F745B816F080013E06F6C97C8FC16E016F816FF17E017FE6CEEFFF0F0FFC019FF1A F86CF1FFE0F3FF806C1BF81CFF6C1CE01DFC6C1CFF1EC06C1DF01EFC6C1DFF6C1EC06D89 6D1DF86D896D896D896D8A6D8A6D8A023F896E890207896E89020089033F1D80150F0301 1DC06F7E040F1CE01601DC001F1BF0170006031AF8F0000FDF003F18FC1A001B07E1007F 16FE1C0F1C01767E0B1F15FFD81FFC1B0748B41B014888B56C878A8A6E878AA26E878AA2 80A27814FE80A280A26E1EFCA2806F5014F8A2816F1DF06F626F1DE0666F1DC06F626F6C 4F14807061704F14007096B55A04FC6004FF06075C05C0051F5C05F0057F5C05FE0403B6 5ADDFFE0033F5DDEFF80011FB75A96BAC7FC1FFC67039F1BE0DAFE0763DAF80198C8FC4A 6C6C19FC02C0011F19E04A0107198049C806FCC9FCD87FF8031F17C049030104F8CAFCD8 1FC0DB000302FCCBFC>128 153 115 278 155 I[191 152 111 277 218 117 D E %EndDVIPSBitmapFont (cmtt10)cvn 5.97765 /Fn 14.94397 /Fp 2 fstore(cmr10)cvn 9.96265 /FD 14.94397 /Fo 2 fstore(cmmi10)cvn 9.96265 /Fx 1 fstore end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 %%EndSetup %%Page: 1 1 1 0 bop 993 668 a FF(Lparse)132 b(1.0)705 1089 y(User's)f(Man)-11 b(ual)530 4174 y @beginspecial 0 @llx 0 @lly 675 @urx 600 @ury 3401 @rwi @setspecial %%BeginDocument: needle.eps %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator by AutoTrace version 0.27a %%Title: %%CreationDate: Mon Jun 4 18:42:41 2001 %%BoundingBox: 0 0 675 600 %%DocumentData: Clean7Bit %%EndComments %%BeginProlog /bd { bind def } bind def /incompound false def /m { moveto } bd /l { lineto } bd /c { curveto } bd /F { incompound not {fill} if } bd /f { closepath F } bd /S { stroke } bd /*u { /incompound true def } bd /*U { /incompound false def f} bd /k { setcmykcolor } bd /K { k } bd %%EndProlog %%BeginSetup %%EndSetup 0.000000 0.000000 0.000000 0.000000 k *u 0 601 m 0 1 l 675 1 l 675 601 l 0 601 l f *U 0.000000 0.000000 0.000000 1.000000 k *u 398 546 m 393.200 547.340 388.831 547.242 383.985 547.870 c 380.300 548.347 376.768 549.902 373 549.806 c 370.254 549.735 367.741 548.320 365 548.383 c 360.932 548.476 357.204 550 353 549.960 c 342 549.533 330.992 545.220 321.170 540.708 c 317.740 539 314 538.725 311 536.362 c 305.908 532.467 307.272 528.249 305.258 523 c 303.616 518.720 299.617 515.550 296 513 c 298.756 525.960 l 306 533 l 306 534 l 302.246 533.613 299.462 532 296 530.771 c 290 528.377 284 527.245 283 520 c 268.830 514 l 258.375 507.229 l 247.830 496.442 l 219.715 474.623 l 201 464.637 l 191 458.438 l 183 455.446 l 161 444 l 152 442.351 l 144 439 l 123 438.674 l 107 434.225 l 95 435.711 l 69 441.403 l 47 464 l 46 464 l 42 460.806 38.549 458.385 39 453 c 37.646 452.263 36.366 451.744 35.299 450.576 c 27.621 442 40.655 435.404 46 430 c 47 434 l 48 434 l 48 428 l 50 428 l 54 437 l 51 427 l 54 428 l 57 419 66.933 418 75 415.699 c 81.430 413.851 87.459 413.598 94 412.816 c 96.698 412.493 99.269 411.420 102 411.354 c 105.992 411.258 110 412.450 114 412.634 c 123.761 413 133.915 413.588 143 417.428 c 148.340 419.685 153.744 420 159 421.994 c 162 423.173 164.855 425.247 168 426.444 c 172.303 428 176.865 428.933 181 431 c 186.538 433.840 191.882 437.349 197.576 439.826 c 205.423 443.241 213.701 444.658 220.996 449.599 c 225.461 452.622 228.357 456.889 232.174 460.575 c 240.201 468.327 248.798 475.976 257.170 483.334 c 275.436 499.389 296.557 510.575 319 519.463 c 323 521 326.829 523.286 331 524.640 c 347.606 530 365.191 523.878 382 526 c 372 509.883 358.929 496.839 346.184 483 c 323.742 458.742 300.587 435 276.999 411.985 c 230.716 366.547 187.306 318 145 269 c 133.715 255.899 123.591 241.717 111.830 229 c 103.475 219.991 94 212.751 86.339 203 c 81.950 197.421 77.826 192 74 186 c 71.947 182.546 69.758 180 70 176 c 77.234 180.525 82.530 187 89 192.561 c 99.177 201 109.539 209.610 118.999 219 c 132.258 232.168 144.353 246.512 157.184 260 c 189.660 294.454 223.254 327.795 255.961 362 c 274.172 381 291.689 400.921 311 418.910 c 328.597 435.303 344.183 453.775 360.985 471 c 365.402 475.528 369.244 480.513 374 484.715 c 378.579 488.760 382.935 493.202 388 496.641 c 394.982 501.382 405 505.555 408 514 c 431.945 500 464 504 490 509.669 c 494.429 510.610 498.581 512.544 503 513.482 c 505.642 514 508.368 513.818 511 514.390 c 514 515 516.859 516.927 520 517.610 c 534.687 520.802 549 520.178 564 519 c 576.498 518.173 591.281 516.593 601.985 509.556 c 607.981 505.615 612.952 495.241 612.290 488 c 611.961 484.400 610 481.434 609 478 c 608.221 475.325 608 472.512 606.708 469.961 c 603.627 464 598 459.928 593.749 455.196 c 590.910 452 588.880 448.315 585.791 445.529 c 577.445 437.999 566.970 432.815 557 427.818 c 544.653 421.629 531.972 416.995 519 412.394 c 513.262 410.359 507.929 407.266 502 405.634 c 499 404.823 495.960 405 493 404.390 c 489.998 403.620 487.283 402 484.285 401.236 c 473.556 398.496 462.455 396.835 452 392.870 c 448.767 391.645 446.301 389.359 443.285 387.780 c 439.450 385.771 435 384 431 382.297 c 426 380 420.777 378.719 415.985 376.461 c 411.733 374.457 408.182 371.292 404 369.223 c 397.490 366 390.771 363.235 385 358.675 c 379.951 354.687 377 349.855 372.737 345.285 c 367.221 339.387 361.698 334.405 356.711 328 c 352.919 323 348.737 318.205 345.475 312.961 c 342 307.642 340 301.595 337 296.170 c 329.839 283.584 322.621 268.759 328 254 c 325.415 251.741 325.961 248.317 326 245 c 326 240.725 325.699 236.249 326.300 232 c 326.714 229 328 225.985 327.596 223 c 326.451 216 316.451 211.942 311 208.918 c 303.473 204.743 295.194 200.698 287 197.954 c 284 196.971 280.951 196.921 278 196 c 271.628 194 265.454 191.413 259 189.633 c 250.883 187.394 242.317 186.924 234 185.769 c 221.893 184 204.459 186.771 196 176 c 191.863 178.533 188.331 175.485 185.613 171.960 c 180.943 165.902 174.319 151.562 180 145 c 174.190 136.323 189.479 126.959 196 123.824 c 211 116.603 226.888 112.766 243 108.961 c 252.404 106.740 262.376 104 272 103.198 c 280.600 102.338 288.585 104.582 297 104.871 c 314.204 105.462 332 103.510 349 107.532 c 359.593 110 369.566 116.373 380 119.447 c 397 124.462 414.603 127.481 432 130.843 c 442.207 132.816 452.309 135.170 462.715 135.930 c 468.886 136.380 474.992 134 481 133.433 c 483.800 133 486.260 134.475 489 134.657 c 492 134.866 495.836 134.221 499 133.896 c 505.995 133.176 513.170 130.228 520 128.553 c 524.447 127.463 529.490 126.343 534 125.617 c 536.684 125.185 539.329 125.749 542 125 c 549.682 123 553.719 116.728 562 116 c 572 107 l 590 99.999 l 616 81.700 l 628 71 l 625 75 l 635 68 l 631.647 72.757 627.255 76.173 623 80 c 609 92.903 592 104.849 574 111 c 574 112 l 589 109.186 l 604 100 l 595 108 l 595 109 l 598 108 l 589 112.522 l 566 116 l 566 117 l 571.576 117.243 577.509 118.350 583 119.373 c 586.191 119.968 588.767 120.942 592 119.851 c 603.477 115.980 609.915 104.380 623 104 c 623 105 l 607.798 108.613 598.454 123.990 584 129.988 c 578.426 132.302 572.574 132.611 567 134.584 c 564.513 135.511 562.675 137.728 559.961 138.386 c 557.751 138.922 555.631 138 553.424 138.343 c 550 138.615 546.232 139.767 543 140.595 c 538 141.864 533.899 145 529 146.291 c 524 147.578 518.978 146.281 514 147 c 509 148 504.955 150.818 500 151.556 c 496.577 152 493.396 151 490 151.263 c 484 151.493 478 152.585 472 152.900 c 467.177 153 462.780 152.630 458 152.575 c 451.848 152.504 446 153.176 440 151.811 c 436.912 151 434.588 148.878 431.576 148 c 425.911 146.820 421.241 149.176 418 143 c 409.855 145.385 401.920 140.362 394 138.722 c 387.645 137.407 380.236 138.251 374 136.333 c 370.352 135.192 368.849 132.488 368 129 c 366.346 128.981 364.605 129 362.980 128.697 c 354.959 126.790 358 119.270 354.258 114 c 352.281 111.447 348.976 110.977 346 110 c 347.562 116.575 345.720 123.713 355 122 c 352 126.546 347.578 124.256 343 123.880 c 337.964 123.465 334 124.762 331 120 c 325.598 122.280 321.585 121.226 316 121.343 c 312.920 121.408 310 122.905 307 122.907 c 301 122.909 295 121.597 289 121.871 c 285.626 122 282.391 123.397 279 123.628 c 272.643 124 265.681 123.926 259.424 125.177 c 256.519 125.759 253.974 127.375 251 127.787 c 244.676 128.663 238.308 128.968 232 130 c 228.859 130.680 226 132.524 223 133.186 c 220.871 133.639 218.660 133 216.576 133.537 c 214.209 134 212 135.908 209.999 137 c 206.221 139.405 202.341 143 198 144 c 192.229 145.444 179.984 141.700 180.704 151.979 c 180.823 153.688 181.500 155.381 182 157 c 186.970 154.340 191 151.884 192 146 c 193 146 l 199 158 l 208.758 162 l 229 166 l 237.867 167.603 l 244 178.956 l 254 185 l 252 176.893 249.933 172.787 242 170 c 242 169 l 244.457 168.828 247.487 168 249.786 169.269 c 254 171.478 253.960 177 255.702 180.960 c 257.878 185.762 263 188 268 189 c 265.195 180.379 263.568 174.890 254 173 c 254 172 l 260.839 170.372 277 168 279 177 c 280.809 176.503 282 176 284 176.323 c 287.515 176.619 291.791 177.557 294 180.394 c 296.730 183.599 296.499 188.191 297.519 192 c 299 198 303.825 202.754 310 204 c 308.382 190.210 l 297 181 l 300.854 181.915 304.272 183.623 308 184.900 c 314.795 187.227 320.866 187 323 195 c 329.955 194.340 334.277 198.377 336 205 c 348 195 l 357 191.533 l 366 187.305 l 379 185.935 l 399.424 184 l 421 184 l 430 185.727 l 467 189.314 l 501 199.391 l 513 200.924 l 547 216.491 l 553.998 219 l 561 224 l 561 229.393 566.539 233.310 568.965 238 c 572.222 244.298 576.969 250.361 579.454 257 c 581.372 262 581.447 268.584 581.924 274 c 582.730 283 579.800 288.684 576.664 297 c 573.657 304.973 570.277 313.805 562.895 319 c 559.484 321.444 555.893 321.505 552 322.386 c 547.230 323.465 542.860 325.374 538 326.311 c 533.910 327 530 328.991 526 329.674 c 517.926 331 509.193 330.390 501 331.170 c 494.239 331.814 486.780 332.819 480 331.785 c 476.433 331.242 473.460 329 470 328.185 c 465.899 327 461.181 325.854 457 325.309 c 454.663 325 452.342 325.600 450 325.203 c 444 324.195 440.744 321.902 435 325 c 434.292 321.179 431.169 317.890 427 317.829 c 424.956 317.799 423 318.685 420.990 318.261 c 418.724 317.796 416.859 316.271 415 315 c 416 318 l 409.226 313.956 403.420 307.604 397.714 302.195 c 395.475 300 392.723 298.615 390.514 296.471 c 386.493 292.570 383.940 287.527 380.367 283.300 c 374.625 276.507 368.450 270 362.665 263.170 c 360.232 260.295 357.937 257 355.391 254.374 c 350.661 249.256 345.815 246.505 345 239 c 340.523 243.724 342.756 246.620 344 252 c 344.845 254.670 344.190 257.379 344.892 260 c 345.981 264 348.802 267.590 348.837 271.961 c 348.881 277.496 342.567 279.509 340.318 284 c 337 290.561 340.493 296.969 343 303 c 344 303 l 347 279 l 352 280 l 351 283 l 359.627 287.995 363.409 300 368.966 307.907 c 370.929 310.673 374.291 312.254 375.973 315.184 c 377.556 317.943 376.914 321 379.318 323.582 c 382.467 326.757 387.485 327.521 390.957 330.390 c 393.642 332.610 395.330 335.812 398.209 337.790 c 401 339.783 404.559 340.920 407.576 342.721 c 410.825 344.662 413.528 347.504 417 349 c 422.638 351.631 428.415 353.324 434 356.259 c 437.934 358.326 441 361.648 445 363.624 c 453 367.596 461.792 369.823 470 373.282 c 473.356 374.697 475.776 377.415 479 378.977 c 481.520 380.198 484.363 379.861 487 380.648 c 490 381.585 492.852 383.535 496 384.482 c 504 386.923 512.826 387.394 521 389.633 c 534.326 393.284 546.941 398.302 559.961 402.957 c 563.577 404.250 567.402 404 571 405.468 c 577.799 408 583 412.250 589 416 c 594.603 419.758 600.924 422.732 605.871 427.329 c 611.744 432.784 615.652 439.700 620.492 445.910 c 629.596 457.593 638.909 468.574 640.815 484 c 641.409 488.811 641.824 495.667 639 499.910 c 637.483 502.537 634.780 504.255 633.313 507 c 632 509.249 631.883 511.747 630.426 513.830 c 626.825 518.978 621.874 522.934 617.589 527.390 c 615 529.986 613.352 533 609.996 534.682 c 606.222 536.544 601.870 535.519 598 537 c 594.592 538.443 591.681 540.889 588 541.595 c 584.772 542.214 581.754 540.713 578.576 541 c 576.323 541.391 574.278 542.522 571.999 542.751 c 569.658 542.986 567.342 542.401 565 542.455 c 560 542.571 554.988 543.591 550 542.776 c 547.213 542.321 544.787 540.716 542 540.313 c 538.993 539.879 536 540.991 533 540.657 c 524.960 539.767 516.811 536.923 509 534.955 c 505.421 534 501.605 534.524 498 533.620 c 494.729 532.801 492.177 530.553 489 529.560 c 484 528 478 527.995 473 527 c 474 524 l 459 521.969 l 445 520 l 434.174 523.563 l 427 531 l 430.797 532 433.203 534.204 435.985 537 c 442 543 451 553.390 449.731 562.960 c 448.519 571.594 430.608 575.235 424 572.171 c 418.904 569.809 414.925 565.911 411 561.999 c 406 557 401 552.186 398 546 c f *U 0.000000 0.000000 0.000000 0.000000 k *u 77 185 m 90.985 197.674 l 137.910 242 l 161 268 l 187.961 295 l 289.424 400.830 l 325.961 437 l 371.985 485.961 l 388 499.652 l 407 515 l 398.719 517.920 395.286 512 389.572 506.883 c 385.601 503.269 381.186 500.326 377 497 c 387.975 516 l 398.570 533 l 412.985 548.961 l 424.985 557.543 l 433 553 l 424 533 l 428.367 532.383 430.426 534.622 433.385 537.719 c 438.342 542.908 442.657 548.190 445 555 c 446 557.456 447.771 561 446.612 563.660 c 444.542 568.310 433.569 570.601 429 570.498 c 418.795 570.267 408.612 556 402.754 548.999 c 383.841 525.915 367.717 501.413 346.830 479.910 c 305 437 262.668 394.753 221.910 351 c 193 320 163.662 289.413 137.576 256 c 129 245 120 233.546 109.996 224 c 98.201 212.970 82.929 200.638 77 185 c f 409 540 m 412.520 539 416.280 536.410 419.896 536.372 c 424.874 536.320 428.997 545.761 428.747 549.985 c 428.516 553.876 425.463 555.630 421.999 554 c 420.888 553.674 419.895 552.666 419 551.888 c 417.279 550.391 415.680 548.733 414 547.170 c 411.565 544.859 409.946 543.224 409 540 c f 352 529 m 355.286 529 358.815 528.685 361.999 529.649 c 369.516 531.925 375.564 540.347 379 547 c 369 546 l 352 529 l f 330 528 m 339.441 529.305 343.666 535.977 345 545 c 334.966 546 330.206 536.747 330 528 c f 342 530 m 351.851 530.457 358 537.328 362 546 c 350.228 544.972 l 342 530 l f 368 530 m 377.226 523.697 391.290 535.699 395 544 c 381.861 547.875 376.576 537.485 368 530 c f 330 542 m 321.303 536.786 l 317 522 l 325.285 524.461 330 533.491 330 542 c f 548 536 m 540.561 536.704 537.432 527.841 535 522 c 546.985 523.573 l 561 540 l 555.939 540.636 549.820 542 548 536 c f 552 523 m 563 520.214 570.443 531 576 539 c 563.882 541.877 557.350 532.609 552 523 c f 519 520 m 530.812 522.890 l 541 538 l 538.391 538 535.607 538.532 533 537.914 c 525 535.995 521 527 519 520 c f 564 521 m 580.700 521 l 595 535 l 582.205 545.549 571.483 530.393 564 521 c f 399 529 m 413 534 l 408 541.704 401.716 534.449 399 529 c f 306 517 m 314.401 521.284 314.661 527.677 317 536 c 308.750 532.775 308.521 524.579 306 517 c f 505 517 m 515.831 515.942 519.817 527.253 523 536 c 511 534.961 507.451 527.691 505 517 c f 584 519 m 612 529 l 607.341 534.730 598 535 592.174 530.486 c 588.535 527.632 585.950 523 584 519 c f 396 526 m 396 525 l 406.181 519.297 412.388 525.502 422 529 c 417.275 535.890 410 530.473 404 528 c 401.437 527 398.630 526.801 396 526 c f 485 512 m 490.653 512 498.550 513.272 502 518.329 c 504.527 521.880 505.537 527.880 507 532 c 503.975 531.975 500.896 532 498 530.853 c 490.495 527.795 488.440 518.566 485 512 c f 385 530 m 384.943 529.984 385 530 385 530 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 418 531 m 419 530 l 418 531 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 295 529 m 296 528 l 295 529 l f *U 0.000000 0.000000 0.000000 1.000000 k *u 415 529 m 416 528 l 415 529 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 285 507 m 293.298 512.191 297.278 517.315 294 527 c 283.941 523.475 285 516.244 285 507 c f 405 519 m 405 518 l 415 515.318 l 429 522 l 422.409 530.287 413 521.706 405 519 c f 468 510 m 468 509 l 480.312 509 485.611 515.457 488 527 c 477.430 524.262 l 473.598 517 l 468 510 l f *U 0.000000 0.000000 0.000000 1.000000 k *u 410 526 m 411 525 l 410 526 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 593 517 m 603 514.878 l 621 519 l 621 520 l 620 523 l 617 523.916 614 525.545 611 525.853 c 603.799 526.559 597 522.619 593 517 c f 394 522 m 381 502 l 400 520 l 394 522 l f 452 509 m 460.824 503 471 513.377 472 522 c 463.174 520 l 452 509 l f 418 513 m 418 512 l 426.773 509 438.728 509.542 442 520 c 432.835 521 425.900 517.497 418 513 c f 433 509 m 433 508 l 442.950 506 453.315 508.250 457 519 c 446 520.547 442.205 512 433 509 c f 281 519 m 273.320 512.947 272 508.563 272 499 c 280.245 502.196 284.559 510.518 281 519 c f 605 513 m 609 505 621.391 507.297 629 507 c 628.782 508.409 628.776 509.750 627.972 511 c 621.855 520.529 613.253 514.467 605 513 c f 263 504 m 255.318 503.649 257 493.634 257 488 c 267 494.213 l 270 511 l 263 504 l f 610 506 m 611.467 496.321 621.625 492 628.999 487.304 c 632 485.280 634.783 482.758 638 481 c 638.493 483.657 639 486.283 638.946 489 c 638.903 491 638.670 493 637.968 494.999 c 633.373 507.399 619.918 503.639 610 506 c f 253 498 m 246 490 l 246 478 l 253.783 481 256 490.494 253 498 c f 616 494 m 617 481.184 l 625.891 473.674 l 631 465 l 633 465 l 633.816 480.910 l 616 494 l f 242 489 m 234 481.435 231 474.852 231 464 c 240.438 468.890 246.465 478.359 242 489 c f 229 479 m 219 471 215.534 462.443 215 450 c 219.911 451.568 225.501 454.885 227.397 460 c 228.546 463 227.848 466.762 228.171 470 c 228.476 473 229.441 475.945 229 479 c f 614 479 m 613.879 468 l 621 451 l 626.366 455 630.627 463.494 626.258 469.896 c 623.555 473.856 618 476.529 614 479 c f 214 469 m 205.412 461.858 202.369 454.825 201 444 c 210.411 447.854 l 213.299 460 l 214 469 l f 610 468 m 605.603 458 l 609 448 l 611 437 l 614.548 440 616.281 443.286 616 448 c 622.443 453.286 613.926 463.590 610 468 c f 203 463 m 189 451.675 l 187 438 l 191.569 439.319 196.405 441.400 198.486 446 c 199.755 448.830 199.727 452 200.623 455 c 201.475 457.787 203 460 203 463 c f 40 454 m 58 447 l 54.978 452.376 48.341 463.415 41.610 456.931 c 40.759 456 40.503 455 40 454 c f 602 459 m 594.834 449 600.565 437.969 599 427 c 614.683 430.763 606.368 449.537 602 459 c f 170 430 m 182.566 435.303 l 187 454 l 175.382 450 172.924 440.717 170 430 c f 595 452 m 588.823 446.701 590.514 441.339 590.985 434 c 591.294 429.216 590.879 424.716 590 420 c 598 425.328 596.703 431.435 596 440 c 595.803 443.985 596.385 448.242 595 452 c f 53 444 m 51.466 445.734 50 446.931 47.906 447.972 c 45.183 449.321 34.938 452.983 35.921 446 c 36.474 442.175 45.525 438.988 48.806 440.213 c 50.603 440.884 51.788 442.638 53 444 c f 171 446 m 161.675 441 155.492 434.488 153 424 c 163.200 424.474 173.539 435.257 171 446 c f 51 438 m 62 442 l 58.377 446.772 52.979 442 51 438 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 59 444 m 60 443 l 59 444 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 586 442 m 581 414 l 590 418.739 590.878 433.856 586 442 c f 39 441 m 46 434 l 46.187 438.787 43 439.465 39 441 c f 64.988 440.506 m 64.970 440.489 65 440.538 64.988 440.506 c f 156 441 m 142.224 432.700 l 132 417 l 142.498 417.917 149.260 422.425 153.424 432 c 154.725 434.991 156.541 437.749 156 441 c f 60.437 438.190 m 59.999 437.933 60.963 438.498 60.437 438.190 c f 54 438 m 55 437 l 54 438 l f 54 430 m 61 427.911 73 430.564 79 435 c 71 437.975 57.490 439.933 54 430 c f 580 438 m 571 427 l 569.671 417 l 566 407 l 571.578 408 577.966 412.215 579.566 418 c 580.657 421.948 579.508 426 579.459 430 c 579.425 432.746 580.344 435.291 580 438 c f 49 435.653 m 48.451 435.378 49.269 435.787 49 435.653 c f 102 418 m 98 415 l 101.886 414.509 106 413.352 109.999 414.514 c 117.931 416.895 123.592 429.527 128 436 c 117.214 434.607 104 430.396 102 418 c f 117 416 m 119.982 416 123 415.808 126 416.894 c 133.778 419.867 137.259 429.246 141 436 c 128.568 434.983 122.757 426 117 416 c f 57 427 m 59 424.211 61.554 421.869 65 420.703 c 73.806 417.724 89.969 422 92 432 c 84 434.230 l 75 430.788 l 57 427 l f 95 434 m 95 433 l 100 433 l 95 434 l f *U 0.000000 0.000000 0.000000 1.000000 k *u 84 431.177 m 84 431 84.169 431.315 84 431.177 c f *U 0.000000 0.000000 0.000000 0.000000 k *u 78 417 m 82.281 416.627 86.685 414.604 91 415 c 98.334 416 104.777 425.246 106 432 c 95.285 429 l 86.999 422.225 l 78 417 l f *U 0.000000 0.000000 0.000000 1.000000 k *u 88 431 m 89 430 l 88 431 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 569 431 m 558.804 424.787 l 554.705 410 l 552 403 l 558 404.469 563.783 407.771 566 414 c 567.172 416.844 567 420 567.619 423 c 568 425.710 569 428.267 569 431 c f 536 396 m 550.697 407 l 555 424 l 548.953 421.786 543 418.199 540.483 411.999 c 538.302 406.689 538.654 401.280 536 396 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 565 418 m 566 417 l 565 418 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 538 416 m 523.514 409.442 l 518 391 l 523.447 392.557 531.988 394.866 534.987 400 c 536.330 402.435 536.432 405.418 537 408 c 537.709 410.846 538.787 413.171 538 416 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 563.988 415.506 m 563.970 415.489 564 415.538 563.988 415.506 c f 557 409 m 561 412 l 557 409 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 504 388 m 516.427 395.228 l 520 410 l 508.955 406.473 508.581 397 504 388 c f 507 405 m 498.797 400.647 493.230 395.791 493 386 c 501.318 387.485 508.543 396.198 507 405 c f 497 402 m 490.838 401.462 483.601 399.362 481.198 392.985 c 480.275 390.536 478.558 383 482.317 382 c 484.433 381.545 486.934 383 488.262 384.559 c 490.243 386.863 490.348 390.290 491.532 393 c 492.937 396.214 495.168 399 497 402 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 543 402 m 544 401 l 543 402 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 465 374 m 470 375.775 475.210 378.670 477.258 384 c 479 388.596 478.827 393.344 481 398 c 467.421 395.957 465 385.948 465 374 c f 453 370 m 454.360 370 455.731 370 457 370.653 c 463.909 373.317 461.653 378.221 462.967 384 c 463.865 387.951 466 391.456 468 395 c 465.609 394.432 463.232 393.851 461 392.583 c 453 387.805 454.479 377.960 453 370 c f 443 367 m 452.244 367.699 451.233 374.776 452.301 382 c 452.764 385 453.901 388 455 391 c 449 389.275 442.923 385.672 442 379 c 441.658 374.932 443.279 371 443 367 c f 432 358 m 439 365 l 441 384 l 428 379.704 432.936 368.440 432 358 c f 429 379 m 419.180 371.815 l 419 352 l 427.896 355.916 428.653 361 429 370 c 429.176 373 430 376 429 379 c f 416 374 m 413.490 372.263 410.568 370.950 408.214 369 c 400.729 362.849 407.332 354.604 408 347 c 416.397 357 l 416 365 l 416 374 l f 396 340 m 397.718 340.593 399.391 341 400.916 342 c 407 346.375 403.620 352.207 402.532 358 c 402 360.748 402.505 363.295 403 366 c 401.213 365.434 399.629 364.886 397.991 363.941 c 388 358.236 394.822 348.738 396 340 c f 389 359 m 383.745 352.959 l 385.892 338 l 385 330 l 394.370 334.916 392.301 341.285 390.515 350 c 389.886 353 390.212 356 389 359 c f 380 351 m 373.980 343 373.216 335.607 375 326 c 385.341 329.406 382.914 343 380 351 c f 371 340 m 368.912 337.848 366.639 335.743 365.316 332.998 c 362.233 326.600 366.380 318.882 369 313 c 376.907 317.724 374 323.336 372.514 331 c 371.895 334 372.211 337 371 340 c f 361 330 m 358.278 326 354.254 322.609 352.703 318 c 350.177 310.495 356 303.863 358 297 c 370 304.183 366 319.470 361 330 c f 354 212 m 364 207.498 l 375 206.240 l 390 202 l 404 201.985 l 413 201.274 l 426 203.909 l 438 202.738 l 444.985 204.326 l 454.184 204.301 l 467.715 206.521 l 483 211 l 483 210 l 471.754 208.987 471 200.700 467 192 c 472.817 193 477.512 195.887 480.651 201 c 483 204.875 484.758 211.782 489 213.883 c 491.821 215.192 495 213.923 498 214.819 c 500.771 215.679 503.232 217.354 505.996 218.257 c 511.666 220 517.306 221.210 522.961 223.416 c 525.523 224.415 527.552 226.310 530 227.337 c 532.972 228.504 536 228.641 538.830 230.275 c 545.398 234.223 550.887 239.849 558 243 c 552.602 235.998 l 551 221 l 556.424 224.548 562.205 230.978 561.813 238 c 561.391 245.559 554.609 250.478 562 257 c 560.749 262.462 563 264.901 564 270 c 565.484 276.572 564.660 283.813 562 290 c 557.712 300.483 544.929 308.253 534 310 c 531 310.503 527.980 309.852 525 310 c 522.545 310.222 520.278 311.344 517.830 311.454 c 514.534 311.603 511.312 310.350 508 310.459 c 502.290 310.648 496.791 311.740 491 311.549 c 483.272 311.293 475.733 310 468 310 c 478.570 314.766 l 485 328 l 483.269 328.507 481.815 328.975 479.975 328.857 c 468.356 328 472.222 313.775 462.995 310.263 c 451.646 305.944 440 303 429.170 297.215 c 425.755 295.373 423.483 292 419.999 290.314 c 413.713 287 407.286 285 401.615 280.591 c 396.445 276.440 394.269 271.378 390.402 266.374 c 385.354 259.843 379 254.505 373.957 248 c 371 244.326 367 241.604 364 237.960 c 361.892 235.354 360.917 231.914 358.586 229.495 c 355.817 226.620 351.252 224.641 350.874 220 c 350.632 217 353.603 214.899 354 212 c f 483 313 m 490.487 315.314 l 497 329 l 494 328.976 490.808 329.198 488.225 327.682 c 483.704 325 483.204 317.668 483 313 c f 494 314 m 501.816 314.742 l 512 327 l 509.754 327.712 507.388 328.686 504.998 328.707 c 496.935 328.778 495.569 320 494 314 c f 506 314 m 515.450 311.213 524.969 317.381 529 326 c 518.675 330.969 509.617 323.860 506 314 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 438.988 324.506 m 438.970 324.489 439 324.538 438.988 324.506 c f *U 0.000000 0.000000 0.000000 0.000000 k *u 521 313 m 534 313.238 l 545 322 l 534.176 326.597 527.489 322.212 521 313 c f 455 311 m 465.262 314.703 l 469 324 l 459.631 323.993 455.210 320.784 455 311 c f 436 323 m 437 322 l 436 323 l f 441 305 m 450.458 307.725 452.744 312.675 454 322 c 451.709 321.979 449.211 322 447 321.258 c 440.659 318.644 441 310.719 441 305 c f 539 311 m 549 307.966 l 564 312 l 560.344 324.718 543.569 320.770 539 311 c f 428 299 m 437.507 302.226 438.794 310 440 319 c 437.936 318.509 435.921 318 434 317 c 426 313.233 427 306.371 428 299 c f 420.437 317.190 m 419.999 316.933 420.963 317.498 420.437 317.190 c f 349 314 m 342.564 305.216 346.875 295 353 287 c 356.725 295.470 352.972 305.932 349 314 c f 416 290 m 424 298 l 426 314 l 420.399 313.226 412.192 309.998 412.492 302.996 c 412.684 298.496 415.858 294.782 416 290 c f 552 304 m 559 300.317 l 573 301 l 572 303.639 571 306.252 568.660 307.991 c 563 312 554.993 309.756 552 304 c f 402 300 m 396.393 296.365 399.984 288.949 402 284 c 403.500 284.410 404.692 284.611 406 285.513 c 415 291.731 408.577 298.337 410 307 c 405.917 305.786 402.787 304.368 402 300 c f 561 297 m 564.896 291 570.589 290 577 288 c 574.742 297.503 570.223 300 561 297 c f 392 275 m 398.252 283.285 l 396 296 l 385.390 292 389.802 283 392 275 c f 336 290 m 334 287.285 331.969 284.396 331.481 281 c 330.428 273.672 335.964 264 343 262 c 345.242 271.961 l 339.699 280 l 336 290 l f 564 288 m 567.494 280.346 571.946 279.551 579 276 c 578.992 278 579.299 280.760 578.397 282.777 c 576.276 287.515 568.418 287.906 564 288 c f 385 286 m 381.986 278.876 384.665 273.901 387 267 c 389 267 l 390.944 273.593 388.733 280.379 385 286 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 349 278 m 350 277 l 349 278 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 377 258 m 378.412 258.603 379.731 259 380.935 260 c 387 265.183 382 271.584 381 278 c 369.989 274.874 374.338 265.696 377 258 c f 567 278 m 567 269.813 572.859 266.497 577 260 c 578 260 l 575.682 274.437 l 567 278 l f 330 272 m 326.304 262 329.346 251.622 340 248 c 344 257.503 335.262 264.506 330 272 c f 368 246 m 369.425 246.697 370.610 247 371.701 248.316 c 377.633 254.975 372.285 260.790 371 268 c 361.538 263 367.301 254 368 246 c f 566 268 m 564.694 260.325 l 572 250 l 573 250 l 575.625 258.298 573.679 263.521 566 268 c f 360 237 m 368.281 243.253 364.260 249.468 363 258 c 356 254.333 357 243.220 360 237 c f 563 257 m 558.890 249.474 561.241 245.169 565 238 c 566 238 l 570.225 245.433 571.578 252.440 563 257 c f 329 253 m 327.246 243.521 330.263 234.435 341 233 c 338.951 241.718 335.908 247 329 253 c f 354 249 m 348.222 244.463 342 231.243 350 226 c 350 229 l 356.932 231.703 l 356.906 237 l 354 249 l f 329 236 m 329 234 328.864 231.945 329.228 229.996 c 330.935 220.861 340 222.633 347 221 c 345 229.371 336 232.367 329 236 c f 545 230 m 537.850 227.735 536.713 218.407 535 212 c 545.257 216.483 549.642 222.960 549 234 c 545 230 l f 343 232.177 m 343 232 343.169 232.315 343 232.177 c f 521 206 m 530.592 208.823 534.918 215.238 535 225 c 525.742 221.581 l 521 206 l f 332 221 m 333.584 210.741 343.592 209.998 352 212 c 346.932 219.906 340 218.425 332 221 c f 507 202 m 518.298 203.523 520.993 209.202 521 220 c 515 218.764 514.836 214.674 512 210 c 510.340 207.238 508.346 204.943 507 202 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 345 218 m 346 217 l 345 218 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 323 196 m 325.542 196.284 327.649 196.626 329.623 198.434 c 333.399 201.891 337.642 213.303 329.950 215.539 c 325.234 216.909 323.220 208 323 205 c 322.871 202 323 198.990 323 196 c f 511 217 m 499 213 l 502 212 l 502 211 l 496.434 210 494.474 205 493 200 c 500.457 201 513.759 207.542 511 217 c f 480 196 m 488.700 196.945 493.532 203.766 495 212 c 488.636 210.972 l 480 196 l f 312 189 m 314.266 189.496 316.747 189.868 318.488 191.564 c 322.661 195.631 321 205.680 321 211 c 310.261 207.339 312.543 198 312 189 c f 338 209 m 343.790 201 353.923 197.773 361 206 c 353 208.853 l 338 209 l f 467 205 m 458 202.258 l 449 189 l 457.304 190.542 472 192.542 467 205 c f 349 198 m 349 197 l 354.791 193.756 362.708 192.547 369 195.433 c 372.336 196.963 375 199.798 378 202 c 369.341 208.560 358 198.796 349 198 c f 364 192 m 364 191 l 373.433 186.460 387.168 190.464 392 200 c 381 200.762 l 364 192 l f 419 187 m 428.320 187 433.975 192.919 438 201 c 429.225 201.243 l 424.588 194.996 l 419 187 l f 432 188 m 437.637 188 444.319 187.446 448.351 192.225 c 450.635 194.931 451.737 198.745 453 202 c 444 201.397 l 432 188 l f 404 186 m 414.220 186 422.366 190 424 201 c 413.878 199.986 408.546 194.630 404 186 c f 382 189 m 382 188 l 389.292 187.404 397.547 183.866 403.505 190.278 c 405.765 192.710 407.304 196 409 199 c 397.173 202.496 391.693 193.612 382 189 c f 279 178 m 292.258 183.513 l 297 198 l 286.282 195.453 279.908 189 279 178 c f 282 194 m 273.188 190.486 l 265 173 l 274.682 175 l 277.789 184 l 282 194 l f 228 168 m 238.357 168.244 240 175.634 244 184 c 241.673 183.979 239.259 184 237 183.347 c 230.551 181.243 229.619 173.704 228 168 c f 216 166 m 226.625 166.573 227.698 173.427 231 182 c 220.306 183 219.187 174.261 216 166 c f 218 182 m 215.460 181 212.370 180.716 210 179 c 205.859 176 206 169.701 206 165 c 208.357 165.447 211.433 165.580 213.442 167 c 217 169.582 219.188 177.985 218 182 c f 197 160 m 205.651 162.285 204.288 171.509 206 179 c 196.181 176 193.556 169.195 197 160 c f 194 176 m 190 172.734 181.709 166.404 184.364 160.184 c 185.883 156.627 190.735 154.545 194 153 c 193 166 l 194 176 l f 206.988 163.506 m 206.970 163.489 207 163.538 206.988 163.506 c f 465 152 m 458.649 148.763 457.858 144.754 457 138 c 464.561 138.963 468 143.173 471 150 c 465 152 l f 442 136 m 446.678 136.214 453 137 455 142 c 456.221 144.831 455.781 148 456 151 c 447.318 149.821 l 442 136 l f 467 139 m 475.925 136.453 481.602 142.968 486 150 c 476 150.218 l 467 139 l f 431 134 m 439.591 135.294 443.330 141.493 442 150 c 435.289 148 432.778 140.220 431 134 c f 479 137 m 482.705 136.288 485.576 136 487 140 c 504 147 l 504 149 l 493.216 150.362 483.985 147.690 479 137 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 454 149 m 452 146 l 454 149 l f *U 0.000000 0.000000 0.000000 0.000000 k *u 418 132 m 426.862 132.411 430 136.744 432 145 c 429.538 145.187 426.500 146 424 145.168 c 419.563 143.559 419 136 418 132 c f 492 138 m 501 135.312 507.434 139.429 515 144 c 507.377 148.318 496.867 144.588 492 138 c f 506 135 m 514 133 l 529 143 l 520.835 147.340 511.378 141.337 506 135 c f 181 144 m 181.363 140.474 182.184 136.874 185.214 134.603 c 190.439 130.688 199.205 133.791 202 139 c 181 144 l f 530.988 143 m 530.962 142.986 531 143 530.988 143 c f 408 140 m 406 129 l 413.799 129.804 417.332 134.407 418 142 c 408 140 l f 518 133 m 526.517 128 534.399 131.396 540 139 c 530.875 140 524.277 140.799 518 133 c f 395 126 m 401.876 127.654 404.671 130.928 405 138 c 396.738 137.800 395 133.701 395 126 c f 533 129 m 540.903 126.665 548.823 128.976 552 137 c 543.442 138 538.545 135.872 533 129 c f 192 131 m 198.857 122 206.569 125 215 130 c 215 132 l 205 135.383 l 192 131 l f 380 123 m 390.683 125.890 l 393 136 l 382 132.563 l 380 123 l f 546 126 m 553.707 125.207 557.988 128.561 564 133 c 557.699 139.429 549.516 132 546 126 c f 371 118 m 377.731 121.598 377.995 126.999 378 134 c 370.367 132.793 369.904 124.477 371 118 c f 207 123 m 215.613 118.170 224.518 119.177 231 127 c 225 127 l 220.468 133.949 211.767 126.954 207 123 c f 552 123 m 552 122 l 564 115.696 574.847 123.355 587 125 c 583.299 129.928 575.634 129.769 570 130 c 567.626 130.219 565.276 130.686 563 129.735 c 559 128 555.820 124.900 552 123 c f 367 128 m 360.463 125 359.635 122.766 358 116 c 359 115 l 364.969 116.877 369.705 121.366 367 128 c f 220 118 m 220 117 l 230.256 113.748 239.472 114 243 126 c 233.541 127.724 228.476 120.939 220 118 c f 236 113 m 245.876 109.877 254.827 111 258 122 c 247 124.573 l 242 119 l 236 113 l f 250 110 m 250 109 l 253.560 108.927 257.497 107.782 261 108.434 c 267.261 109.598 271.309 115.305 273 121 c 263 122.381 l 257 115.185 l 250 110 l f 328 109 m 330 108 331.783 107.955 334 108 c 336.360 108 338.871 108.462 340.852 109.858 c 347.989 114.888 341.271 127 334.738 119.566 c 331.791 116.180 331.701 112.173 328 109 c f 267 107 m 269.861 106.410 273 105.202 275.996 105.568 c 282.752 106.408 284.445 113.533 286 119 c 277.213 120.307 l 267 107 l f 299 108 m 309 106.756 313.601 109.661 315 120 c 305.430 119.731 l 299 108 l f 283 106 m 292.304 106 298.266 108.671 301 118 c 299.361 118.693 297.770 119.489 295.975 119.698 c 287.530 120.678 285.993 111.859 283 106 c f 313 108 m 321.342 108.172 328.802 108.937 331 118 c 328.428 118.434 325.625 119.623 323 119.447 c 317 119 315.253 112.404 313 108 c f *U 0.000000 0.000000 0.000000 1.000000 k *u 624 104 m 625 103 l 624 104 l f 626 103 m 627 102 l 626 103 l f 605 100 m 606 99 l 605 100 l f 628 70 m 631 64 l 632 64 l 628 70 l f 636 68 m 641 64 l 641 65 l 636 68 l f *U %%Trailer %%EOF %%EndDocument @endspecial 1106 4883 a FE(T)-19 b(ommi)75 b(Syrj)n(\177)-115 b(anen)p eop %%Page: 2 2 2 1 bop 1924 5255 a FD(ii)p eop %%Page: 3 3 3 2 bop 515 1187 a FE(Con)-6 b(ten)g(ts)639 1619 y FD(0.1)84 b(Licence)e(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) 131 b(1)639 1719 y(0.2)84 b(Recen)n(t)28 b(Changes)f(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(2)639 1818 y(0.3)84 b(Notation)30 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)131 b(3)515 2001 y FC(1)76 b(In)m(tro)s(duction)2166 b(4)639 2100 y FD(1.1)84 b(Short)27 b(Primer)g(on)g(Logic)g (Programming)43 b(.)f(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)131 b(5)639 2200 y(1.2)84 b(Stable)28 b(Mo)r(del)g(Basics)68 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(6)639 2300 y(1.3)84 b(A)28 b(Practical)e(Example)43 b(.)f(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)131 b(8)639 2399 y(1.4)84 b(Di\013eren)n(t)28 b(Smo)r(dels)g(F)-7 b(ron)n(t-Ends)47 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(11)515 2582 y FC(2)76 b(Installation)2170 b(13)639 2682 y FD(2.1)84 b(Installation)27 b(on)g(Windo)n(ws)h(systems)57 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(13)515 2864 y FC(3)76 b(In)m(v)m(oking)33 b(Lparse)1976 b(15)639 2964 y FD(3.1)84 b(Lparse)27 b(Options)52 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)90 b(16)639 3064 y(3.2)84 b(Smo)r(dels)28 b(Options)61 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(17)515 3246 y FC(4)76 b(Theoretical)32 b(Stu\013)1941 b(19)639 3346 y FD(4.1)84 b(Basic)27 b(T)-7 b(erminology)64 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(19)639 3445 y(4.2)84 b(Stable)28 b(Mo)r(del)g(Seman)n(tics)61 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)90 b(21)639 3545 y(4.3)84 b(Grounding)27 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(22)639 3645 y(4.4)84 b(Domain)28 b(Predicates)49 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(24)830 3744 y(4.4.1)k(What's)28 b(New?)50 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(24)830 3844 y(4.4.2)k(Informal)27 b(Domains)76 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(25)830 3944 y(4.4.3)k(Constructing)27 b(Domains)43 b(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)90 b(27)830 4043 y(4.4.4)k(F)-7 b(ormal)27 b(Domains)65 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(27)639 4143 y(4.5)84 b(Domain-Restricted)27 b(Programs)64 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)90 b(28)639 4242 y(4.6)84 b(W)-7 b(eigh)n(t)28 b(Constrain)n(ts)35 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(29)639 4342 y(4.7)84 b(Classical)26 b(Negation)71 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(33)639 4442 y(4.8)84 b(P)n(artial)26 b(Mo)r(dels)h(and)h(Disjunctiv)n(e)g(Programs)68 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(34)830 4541 y(4.8.1)k(Disjunctiv)n(e)28 b(Programs)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)90 b(34)830 4641 y(4.8.2)k(P)n(artial)26 b(Mo)r(dels)67 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(35)639 4741 y(4.9)84 b(Computational)27 b(Complexit)n(y)71 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)90 b(37)1912 5255 y(iii)p eop %%Page: 4 4 4 3 bop 515 523 a FC(5)76 b(Language)2250 b(38)639 623 y FD(5.1)84 b(Commen)n(ts)30 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)90 b(38)639 722 y(5.2)84 b(T)-7 b(erms)62 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(38)639 822 y(5.3)84 b(A)n(toms)28 b(and)f(Literals)39 b(.)i(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(40)639 922 y(5.4)84 b(Rule)28 b(T)n(yp)r(es)65 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)90 b(43)639 1021 y(5.5)84 b(Declarations)27 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(44)639 1121 y(5.6)84 b(Statemen)n(ts)76 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)90 b(48)639 1220 y(5.7)84 b(F)-7 b(unctions)64 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(49)830 1320 y(5.7.1)k(Numerical)27 b(F)-7 b(unctions)44 b(.)e(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)90 b(49)830 1420 y(5.7.2)k(In)n(ternal)27 b(F)-7 b(unctions)65 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(50)830 1519 y(5.7.3)k(User-De\014ned)27 b(F)-7 b(unctions)78 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)90 b(51)830 1619 y(5.7.4)k(Lparse)26 b(API)55 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(53)639 1719 y(5.8)84 b(Keyw)n(ords)58 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)90 b(55)515 1901 y FC(6)76 b(Examples)2243 b(56)639 2001 y FD(6.1)84 b(No)r(de)28 b(Coloring)81 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(56)639 2100 y(6.2)84 b(Logical)26 b(Puzzles)52 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)90 b(56)639 2200 y(6.3)84 b(Planning)26 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(59)515 2383 y FC(7)76 b(W)-8 b(riting)31 b(Smo)s(dels)e(Programs)1512 b(62)639 2482 y FD(7.1)84 b(Editing)28 b(Smo)r(dels)f(Programs)e(with)j (Emacs)c(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) 90 b(62)639 2582 y(7.2)84 b(Debugging)27 b(Smo)r(dels)h(Programs)35 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)90 b(63)639 2682 y(7.3)84 b(P)n(arser)25 b(W)-7 b(arnings)73 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(65)639 2781 y(7.4)84 b(Handling)28 b(BIG)f(programs)53 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)90 b(68)830 2881 y(7.4.1)k(Altering)27 b(the)h FB(Compute)d FD(Statemen)n(t)75 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(68)830 2980 y(7.4.2)k(Restricting)27 b(the)h(Extensions)f(of)g(Domain)h(Predicates)56 b(.)41 b(.)h(.)f(.)h(.)90 b(70)830 3080 y(7.4.3)k(Enlarging)25 b(the)j(Extensions)f(of)h(the)f(Domain)h(Predicates)c(.)42 b(.)f(.)h(.)90 b(71)830 3180 y(7.4.4)k(Hac)n(king)26 b(Bits)i(and)f(Pieces)g(T)-7 b(ogether)27 b(b)n(y)g(Hand)68 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(71)639 3279 y(7.5)84 b(Miscellanous)27 b(Tips)d(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(73)515 3462 y FC(8)76 b(F)-8 b(uture)33 b(Dev)m(elopmen)m(t)1786 b(74)515 3645 y(A)52 b(Smo)s(dels)29 b(API)2096 b(75)639 3744 y FD(A.1)64 b(Installing)27 b(and)h(Using)f(the)h(API)72 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)90 b(75)639 3844 y(A.2)64 b(Header)27 b(Files)f(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(76)830 3944 y(A.2.1)74 b FB(defines.h)j FD(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) 90 b(76)830 4043 y(A.2.2)74 b FB(api.h)59 b FD(.)41 b(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)90 b(77)830 4143 y(A.2.3)74 b FB(atomrule.h)33 b FD(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(81)830 4242 y(A.2.4)74 b FB(smodels.h)j FD(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)90 b(81)830 4342 y(A.2.5)74 b FB(stable.h)56 b FD(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(84)830 4442 y(A.2.6)74 b(Example)25 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)90 b(84)515 4624 y FC(B)56 b(Smo)s(dels)29 b(In)m(ternal)k(F)-8 b(ormat)1601 b(86)639 4724 y FD(B.1)67 b(Rule)28 b(T)n(yp)r(es)65 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)90 b(88)1913 5255 y(iv)p eop %%Page: 1 5 1 4 bop 515 523 a FA(0.1)135 b(Licence)515 705 y FD(Cop)n(yrigh)n(t)928 702 y(c)905 705 y Fz(\015)p FD(1998-2000)23 b(T)-7 b(ommi)28 b(Syrj\177)-42 b(anen)27 b Fy(tommi.syrjanen@hut.\014)639 805 y FD(This)c(program)d(is)i(free)g(soft)n(w)n(are;)h(y)n(ou)e(can)h (redistribute)g(it)h(and/or)e(mo)r(dify)h(it)h(under)515 904 y(the)h(terms)f(of)g(the)h(GNU)g(General)f(Public)g(License)g(as)g (published)h(b)n(y)f(the)h(F)-7 b(ree)23 b(Soft)n(w)n(are)515 1004 y(F)-7 b(oundation;)23 b(either)e(v)n(ersion)e(2)i(of)g(the)g (License,)h(or)f(\(at)g(y)n(our)f(option\))h(an)n(y)f(later)h(v)n (ersion.)639 1103 y(This)f(program)d(is)j(distributed)g(in)g(the)g(hop) r(e)g(that)g(it)g(will)g(b)r(e)g(useful,)h(but)g(WITHOUT)515 1203 y(ANY)27 b(W)-9 b(ARRANTY;)27 b(without)g(ev)n(en)e(the)i(implied) g(w)n(arran)n(t)n(y)c(of)j(MER)n(CHANT)-7 b(ABIL-)515 1303 y(ITY)36 b(or)e(FITNESS)i(F)n(OR)f(A)h(P)-7 b(AR)g(TICULAR)36 b(PURPOSE.)e(See)i(the)g(GNU)g(General)515 1402 y(Public)27 b(License)g(for)g(more)g(details.)639 1502 y(Y)-7 b(ou)30 b(should)f(ha)n(v)n(e)f(receiv)n(ed)h(a)g(cop)n(y)g(of)g(the)h(GNU)g (General)f(Public)g(License)g(along)515 1602 y(with)20 b(this)h(program;)f(if)h(not,)g(write)f(to)g(the)g(F)-7 b(ree)20 b(Soft)n(w)n(are)f(F)-7 b(oundation,)21 b(Inc.,)h(59)d(T)-7 b(emple)515 1701 y(Place)26 b(-)i(Suite)g(330,)e(Boston,)h(MA)h (02111-1307,)23 b(USA.)1926 5255 y(1)p eop %%Page: 2 6 2 5 bop 515 523 a FA(0.2)135 b(Recen)l(t)46 b(Changes)515 705 y FD(This)33 b(section)h(giv)n(es)e(quic)n(k)h(o)n(v)n(erview)f(on) h(recen)n(t)g(c)n(hanges)f(that)i(are)f(made)g(in)h(the)g(ac-)515 805 y(cepted)c(language.)44 b(The)31 b(more)e(detailed)i(v)n(ersion)d (notes)i(are)g(con)n(tained)g(in)g(\014le)h(NEWS)515 904 y(in)d(the)g(distribution)f(directory)-7 b(.)515 1087 y FB(Lparse)p FC(-1.0.3)722 1186 y FD(con)n(tains)36 b(sev)n(eral)f(c)n(hanges.)63 b(The)37 b(most)g(imp)r(ortan)n(t)f(is)h (that)g(the)g(de\014nition)g(of)722 1286 y(domain)31 b(predicates)g(extended)h(to)f(co)n(v)n(er)e(strati\014ed)i(rules.)48 b(See)32 b(Section)f(4.4)g(for)722 1386 y(details.)42 b(Second,)29 b(there's)g(no)n(w)f(an)h(alternativ)n(e)f(syn)n(tax)g (for)h(declarations)f(where)722 1485 y(the)39 b(k)n(eyw)n(ords)d(are)i (preceded)g(b)n(y)g(the)g(c)n(haracter)f FB(#)p FD(.)69 b(Tw)n(o)37 b(new)i(declarations,)722 1585 y FB(#option)25 b FD(and)j FB(#domain)c FD(w)n(ere)j(added)g(\(see)h(Section)f(5.5\).) 515 1751 y FB(Lparse)p FC(-1.0.1)722 1851 y FD(added)20 b(a)e(new)i(in)n(ternal)f(function.)34 b(The)20 b(call)f(`)p FB(weight\(a\(X\)\))p FD(')14 b(returns)19 b(the)h(w)n(eigh)n(t)722 1950 y(of)28 b(the)g(literal)f Fx(a)p FD(\()p Fx(X)7 b FD(\).)515 2116 y FB(Lparse)p FC(-0.99.61)722 2216 y FD(adjusted)37 b(the)g(w)n(eigh)n(t)f(declarations)f(a)h(little)i (bit)f(so)f(that)h(no)n(w)f(negativ)n(e)f(liter-)722 2316 y(als)c(are)f(defaulted)h(to)g(p)r(ositiv)n(e)g(ones)f(if)h(there) g(are)f(no)h(explicit)g(declarations)f(for)722 2415 y(them.)43 b(This)29 b(b)r(eha)n(vior)f(can)h(b)r(e)h(turned)f(o\013)g(with)h(the) g(command)f(line)g(argumen)n(t)722 2515 y(`)p FB(--separate-weight)o (-d)o(efi)o(ni)o(tio)o(ns)o FD('.)515 2681 y FB(Lparse)p FC(-0.99.60)722 2780 y FD(c)n(hanged)41 b(the)h(b)r(eha)n(vior)e(of)h (w)n(eigh)n(t)g(declarations)f(so)h(that)g(no)n(w)g(p)r(ositiv)n(e)g (and)722 2880 y(negativ)n(e)27 b(literals)g(are)f(di\013eren)n(tiated.) 37 b(F)-7 b(or)27 b(example,)905 3029 y FB(weight)41 b(a)i(=)g(5.)905 3129 y(weight)e(not)h(a)i(=)f(10.)722 3262 y FD(assigns)26 b(di\013eren)n(t)i(w)n(eigh)n(ts)f(for)g Fx(a)g FD(and)h(not)f Fx(a)p FD(.)722 3395 y(The)k(default)h(b)r(eha)n (vior)d(of)i(quoted)g(strings)f(also)g(c)n(hanged)g(and)g(no)n(w)h (quotes)f(are)722 3494 y(alw)n(a)n(ys)c(retained)h(and)h Fx(a)g FD(and)f(")p Fx(a)p FD(")g(are)g(di\013eren)n(t)h(atoms.)37 b(The)27 b(old)h(b)r(eha)n(vior)e(can)722 3594 y(b)r(e)i(accessed)f (with)h(the)g(`)p FB(--drop-quotes)p FD(')22 b(command)27 b(line)h(argumen)n(t.)515 3760 y FB(Lparse)p FC(-0.99.58)722 3860 y FD(allo)n(ws)22 b(expressions)f(to)h(b)r(e)h(used)g(in)g(a)f (more)g(in)n(tuitiv)n(e)h(w)n(a)n(y)e(inside)i(constrain)n(t)e(and)722 3959 y(w)n(eigh)n(t)27 b(literals.)36 b(F)-7 b(or)27 b(example,)h(in)f(a)h(rule)905 4109 y FB(a\(X,Y\))41 b(:-)i(1)87 b(X)43 b(+)g(Y)g(==)g(0,)g(Y)g(<)g(X)87 b(1,)1166 4208 y(foo\(X,Y\).)722 4341 y FD(the)31 b(atom)g(a\(X,Y\))g(is)g(true)f (when)h(exactly)f(one)g(of)h(the)g(expressions)e(ev)-5 b(aluate)30 b(to)722 4441 y(true.)722 4574 y(Additionally)-7 b(,)26 b(an)g(empt)n(y)f(conditional)g(literal)g(is)g(no)n(w)g(treated) g(as)g(an)g(unsatis\014ed)722 4673 y(literal)i(in)h(all)g(cases.)1926 5255 y(2)p eop %%Page: 3 7 3 6 bop 515 523 a FA(0.3)135 b(Notation)p 432 812 4 174 v 515 696 a FD(The)33 b(parts)g(of)h(this)g(man)n(ual)f(that)g(are)g(c) n(hanged)g(in)g(the)h(curren)n(t)f(man)n(ual)g(v)n(ersion)f(are)515 796 y(denoted)19 b(b)n(y)g(putting)g(a)g(con)n(tinous)f(blac)n(k)h (line)g(in)g(the)h(left)f(margin,)h(as)f(in)g(this)g(paragraph.)p 432 862 4 17 v 432 895 V 432 928 V 432 961 V 432 995 V 432 1028 V 432 1061 V 432 1094 V 639 903 a(Similarily)-7 b(,)23 b(c)n(hanges)d(that)i(ha)n(v)n(e)f(happ)r(ened)h(recen)n(tly)e (are)h(denoted)h(b)n(y)f(a)h(dashed)f(line)515 1002 y(in)29 b(the)h(left)g(margin.Similarily)-7 b(,)28 b(c)n(hanges)g(that)i(ha)n (v)n(e)e(happ)r(ened)h(recen)n(tly)g(are)f(denoted)515 1102 y(b)n(y)f(a)g(dashed)g(line)h(in)g(the)g(left)g(margin.)1926 5255 y(3)p eop %%Page: 4 8 4 7 bop 515 1146 a Fw(Chapter)64 b(1)515 1561 y FE(In)-6 b(tro)6 b(duction)515 1993 y Fv(Smodels)21 b FD(is)h(a)f(system)h(for)f (answ)n(er)f(set)i(programming.)33 b(It)22 b(consists)f(of)28 b FB(smodels)p FD(,)21 b(an)g(ef-)515 2092 y(\014cien)n(t)j(implemen)n (tation)f(of)h(the)g(stable)f(mo)r(del)h(seman)n(tics)f(for)g(normal)g (logic)f(programs,)515 2192 y(and)j FB(lparse)p FD(,)f(a)h(fron)n (t-end)f(that)i(transforms)e(user)h(programs)e(in)n(to)i(form)g(that)h FB(smodels)515 2291 y FD(understands.)639 2391 y(Answ)n(er)f(set)h (programming)d([6)o(,)j(10)o(])g(is)f(a)g(programming)e(paradigm)h (completely)i(dif-)515 2491 y(feren)n(t)i(from)g(traditional)f(pro)r (cedural)g(programming.)37 b(Instead)27 b(of)i(writing)e(algorithms)515 2590 y(to)39 b(solv)n(e)g(a)g(problem)g(in)h(hand,)i(the)e(programmer)d (describ)r(es)i(the)h(problem)f(using)g(a)515 2690 y(formal)27 b(language)e(and)j(an)f(underlying)g(engine)h(\014nds)f(a)h(solution)f (to)g(the)h(problem.)639 2790 y Fv(Smodels)c FD(programs)e(are)h (written)h(using)g(standard)f(\(though)h(extended\))h(logic)e(pro-)515 2889 y(gramming)d(notation.)35 b(That)22 b(is,)h(the)g(programs)c(are)i (comp)r(osed)h(of)g(atoms)f(and)h(inference)515 2989 y(rules.)49 b(An)33 b(atom)e(represen)n(ts)g(a)g(claim)h(ab)r(out)g (the)h(problem)e(univ)n(erse)g(and)h(it)g(ma)n(y)g(b)r(e)515 3088 y Fu(true)i FD(or)e Fu(false)p FD(.)55 b(Inference)33 b(rules)h(are)e(used)i(to)f(enco)r(de)h(relationships)e(b)r(et)n(w)n (een)i(atoms.)515 3188 y(An)26 b(answ)n(er)e(to)h(a)g(problem)g(is)h(a) f(set)g(of)h(atoms,)f(called)g(a)g(stable)g(mo)r(del,)h(that)g(tell)g (whic)n(h)515 3288 y(atoms)h(are)f Fu(true)p FD(.)639 3387 y(A)40 b Fv(Smodels)e FD(program)f(ma)n(y)h(ha)n(v)n(e)g(one,)k (none,)g(or)c(man)n(y)g(stable)h(mo)r(dels.)71 b(The)515 3487 y(stable)31 b(mo)r(dels)h(of)g(a)f(program)f(ma)n(y)h(b)r(e)h (seen)g(as)f(a)g(set)h(of)g(rational)f(b)r(eliefs)h(ab)r(out)g(the)515 3587 y(program.)60 b(That)35 b(is,)j(if)f(w)n(e)e(think)i(that)f(a)f (program)f(is)i(a)g(kno)n(wledge)e(base)h(enco)r(ding)515 3686 y(the)g(relationships)f(b)r(et)n(w)n(een)h(ob)5 b(jects)35 b(and)g(a)f(stable)h(mo)r(del)h(is)f(a)f(set)h(of)g(those)g (things)515 3786 y(in)d(our)e(univ)n(erse)h(that)h(w)n(e)f(b)r(eliev)n (e)h(to)f(b)r(e)h(true,)h(then)f(our)e(b)r(eliefs)j(are)d(consisten)n (t)h(and)515 3885 y(w)n(ell-founded.)36 b(Consistency)26 b(means)g(that)h(w)n(e)f(don't)h(b)r(eliev)n(e)f(in)h(t)n(w)n(o)f(con)n (tradictionary)515 3985 y(things)e(and)g(w)n(ell-foundedness)f(means)h (that)h(w)n(e)f(ha)n(v)n(e)f(some)g(reason)g(for)h(our)f(b)r(elief.)37 b(W)-7 b(e)515 4085 y(don't)30 b(w)n(an)n(t)f(to)h(b)r(eliev)n(e)g (that)g(the)g(Mo)r(on)f(is)h(made)g(of)g(green)f(c)n(heese)g(unless)g (someb)r(o)r(dy)515 4184 y(giv)n(es)23 b(a)h(coheren)n(t)f(theory)g (that)i(explains)e(wh)n(y)h(Mo)r(on)g(is)g(actually)g(a)g(big)g(dairy)f (pro)r(duct.)515 4284 y(F)-7 b(or)27 b(formal)g(de\014nition)h(of)f (the)h(stable)f(mo)r(del)h(seman)n(tics)f(see)g(Section)h(4.2.)639 4384 y Fv(Smodels)g FD(has)h(t)n(w)n(o)f(parts,)g FB(smodels)e FD(and)j FB(lparse)2318 4353 y Ft(1)2353 4384 y FD(.)41 b(The)28 b(\014rst)h(part,)g FB(smodels)p FD(,)d(is)515 4483 y(the)31 b(actual)f(logic)g(programming)f(engine)i(doing)f(all)g (the)i(hard)e(w)n(ork)f(and)i FB(lparse)d FD(just)515 4583 y(adds)i(a)h(la)n(y)n(er)e(of)i(syn)n(tactic)g(sugar)e(on)i(top)g (of)g(it.)47 b(The)31 b FB(smodels)e FD(has)h(b)r(een)i(dev)n(elop)r (ed)515 4682 y(in)h(the)h(Lab)r(oratory)d(for)i(Theoretical)g(Computer) g(Science)g(in)h(Helsinki)g(Univ)n(ersit)n(y)e(of)515 4782 y(T)-7 b(ec)n(hnology)29 b(b)n(y)h(P)n(atrik)f(Simons)i([13)o(,)g (8,)f(11)o(,)h(14)o(,)g(12)o(,)g(15)o(,)g(9,)g(10)o(])g(and)f(the)h FB(lparse)e FD(has)p 515 4835 1146 4 v 607 4889 a Fs(1)642 4912 y Fr(Actually)-6 b(,)23 b(in)f(Section)j(1.4)d(w)n(e)i(see)f(that) h(there)f(are)g(also)g(other)g(fron)n(t-ends)g(in)g(addition)g(to)h Fq(lparse)p Fr(.)1926 5255 y FD(4)p eop %%Page: 5 9 5 8 bop 515 523 a FD(b)r(een)28 b(dev)n(elop)r(ed)f(b)n(y)g(T)-7 b(ommi)28 b(Syrj\177)-42 b(anen)27 b([19)o(].)639 623 y(The)33 b(new)n(est)g(v)n(ersions)e(of)40 b FB(smodels)p FD(,)31 b FB(lparse)p FD(,)h(and)h(this)g(do)r(cumen)n(t)g(are)f(a)n(v) -5 b(ailable)515 722 y(at)1107 888 y FB(http://www.tcs.hu)o(t.)o(fi/)o (So)o(ft)o(war)o(e/)o(smo)o(de)o(ls)o FD(.)515 1163 y FA(1.1)135 b(Short)45 b(Primer)g(on)g(Logic)g(Programming)515 1345 y FD(This)31 b(section)h(has)f(a)g(really)g(short)g(primer)g(on)h (the)g(sub)5 b(ject)32 b(of)f(logic)g(programming)f(in)515 1444 y(general.)68 b(It)39 b(is)g(aimed)f(for)g(readers)f(who)i(ha)n(v) n(e)e(no)h(prior)g(exp)r(erience)g(on)g(logic)g(pro-)515 1544 y(gramming.)58 b(F)-7 b(or)35 b(an)g(extensiv)n(e)g(treatmen)n(t)g (on)g(the)g(traditional)g(logic)f(programming)515 1644 y(tec)n(hniques,)27 b(y)n(ou)g(should)g(consult)h Fy(The)i(A)n(rt)f(of) i(Pr)l(olo)l(g)36 b FD(b)n(y)27 b(Sterling)h(and)f(Shapiro)g([18)o(].) 639 1743 y(There)38 b(are)f(basically)h(four)g(kinds)g(of)g(things)h (in)f(logic)g(programming)e(languages:)515 1843 y(atoms,)g(constan)n (ts,)g(v)-5 b(ariables,)36 b(and)e(rules.)59 b(They)35 b(are)f(presen)n(ted)g(here)h(rather)f(infor-)515 1942 y(mally)-7 b(.)36 b(F)-7 b(or)27 b(formal)g(stu\013,)i(see)e(Chapter)g (4.)515 2125 y FC(Constan)m(t)761 2225 y FD(Constan)n(ts)38 b(are)g(the)h(individual)g(things)g(that)g(exists)g(in)g(the)g(univ)n (erse)f(of)h(the)722 2324 y(problem)25 b(domain.)36 b(Constan)n(ts)25 b(are)f(either)i(n)n(um)n(b)r(ers)f(or)g(sym)n(b)r(olic)g(constan)n (ts.)35 b(In)722 2424 y(most)20 b(logic)g(programming)e(languages)g (the)j(initial)f(letter)g(of)g(a)g(constan)n(t)g(is)g(written)722 2524 y(in)28 b(lo)n(w)n(er)e(case.)722 2656 y(F)-7 b(ew)28 b(examples)f(of)h(constan)n(ts:)35 b FB(a,)43 b(10,)g(foo,)e(bar)p FD(.)515 2823 y FC(V)-8 b(ariable)752 2922 y FD(V)h(ariables)28 b(are)g(used)h(to)g(generalize)f(things.)42 b(Unlik)n(e)29 b(traditional)f(programming)722 3022 y(language,)e(y)n(ou)h(don't)h (usually)g(assign)e(a)i(v)-5 b(alue)27 b(to)h(a)f(v)-5 b(ariable)27 b(directly)-7 b(.)37 b(Instead,)722 3121 y(the)28 b(underlying)e(engine)h(\014nds)h(the)f(correct)f(v)-5 b(alues)27 b(\(or)f Fy(substitutes)33 b FD(constan)n(ts)26 b(in)722 3221 y(place)h(of)h(the)g(v)-5 b(ariables\))27 b(for)g(them.)722 3354 y(V)-7 b(ariables)27 b(start)g(with)h(a)f (capital)g(letter,)h(lik)n(e)f(in:)37 b FB(X,)43 b(Foo,)f(Bar)p FD(.)515 3520 y FC(A)m(tom)743 3620 y FD(An)21 b(atom)f(consists)f(of)i (a)f(predicate)g(sym)n(b)r(ol)g(that)g(is)h(follo)n(w)n(ed)e(b)n(y)h(a) g(paren)n(thesized)722 3719 y(list)40 b(of)f(constan)n(ts)f(or)g(v)-5 b(ariables.)70 b(A)n(toms)38 b(are)g(used)h(to)g(express)f (relationships)722 3819 y(b)r(et)n(w)n(een)26 b(constan)n(ts.)35 b(F)-7 b(or)25 b(example,)g(an)g(atom)g Fx(par)r(ent)p FD(\()p Fx(j)5 b(ohn;)14 b(j)5 b(il)r(l)r FD(\))24 b(migh)n(t)h(tell)h (us)722 3918 y(that)e(John)f(is)g(Jill's)g(paren)n(t.)35 b(An)24 b(atom)f(has)f(t)n(w)n(o)h(p)r(ossible)g(truth)h(v)-5 b(alues,)24 b Fu(true)f FD(and)722 4018 y Fu(false)p FD(.)515 4184 y FC(Rule)750 4284 y FD(Rules)k(allo)n(w)f(us)i(to)f(mak) n(e)f(inferences)h(based)g(on)g(the)h(predicates.)36 b(F)-7 b(or)26 b(example,)722 4383 y(a)h(rule:)1167 4583 y FB(sibling\(X,Y\))39 b(:-)k(parent\(Z,X\),)38 b(parent\(Z,Y\))p FD(.)722 4782 y(w)n(ould)33 b(tell)h(us)g(that)f(if)h Fx(X)40 b FD(and)33 b Fx(Y)53 b FD(b)r(oth)34 b(ha)n(v)n(e)e(the)i (same)f(paren)n(t)f Fx(Z)6 b FD(,)35 b(then)f(they)722 4881 y(are)29 b(siblings.)42 b(Rules)29 b(are)g(comp)r(osed)g(of)g(t)n (w)n(o)g(parts:)40 b(the)30 b(head)f(\(part)g(to)h(the)f(left)722 4981 y(of)f(`)p FB(:-)p FD('\))f(and)h(the)g(b)r(o)r(dy)f(\(righ)n(t)h (to)f(`)p FB(:-)p FD('\).)1926 5255 y(5)p eop %%Page: 6 10 6 9 bop 722 523 a FD(The)42 b(idea)f(here)g(is)g(that)h(if)g(ev)n(ery)e (atom)h(in)h(the)f(b)r(o)r(dy)h(\(or)f(tail)g(as)g(it)h(is)f(also)722 623 y(often)f(called\))g(is)f(true,)k(the)d(head)f(m)n(ust)h(also)e(b)r (e)i(true.)73 b(So)40 b(if)g(there)f(is)h(some)722 722 y(w)n(a)n(y)26 b(to)g(substitute)h(constan)n(ts)f(for)g(the)g(v)-5 b(ariables)26 b Fx(X)7 b FD(,)26 b Fx(Y)18 b FD(,)27 b(and)g Fx(Z)32 b FD(suc)n(h)26 b(that)h(b)r(oth)722 822 y Fx(par)r(ent)p FD(\()p Fx(Z)q(;)14 b(X)7 b FD(\))31 b(and)f Fx(par)r(ent)p FD(\()p Fx(Z)q(;)14 b(Y)19 b FD(\))31 b(are)f Fu(true)p FD(,)h(w)n(e)g(can)f(infer)h(that)g Fx(sibl)r(ing)s FD(\()p Fx(X)r(;)14 b(Y)i FD(\))722 922 y(is)28 b(also)e Fu(true)p FD(.)639 1104 y(In)g(classic)e(logic)g (programming)f(languages)h(\(lik)n(e)h(Prolog\),)f(the)h(inferences)g (are)f(usu-)515 1204 y(ally)34 b(made)h(top-do)n(wn.)58 b(That)34 b(is,)j(w)n(e)e(giv)n(e)e(some)i(atom)f(as)g(a)h(query)f (string,)i(and)f(the)515 1303 y(system)27 b(tries)g(to)h(\014nd)g(a)f (w)n(a)n(y)f(to)i(mak)n(e)f(it)h Fu(true)p FD(.)639 1403 y(F)-7 b(or)20 b(example,)h(if)g(w)n(e)e(w)n(ere)g(in)n(terested)h(in)g (\014nding)h(out)f(whether)g(Jac)n(k)e(is)i(Jill's)g(sibling,)515 1503 y(w)n(e)33 b(w)n(ould)h(issue)f(a)h(query)f(\(called)h(a)f Fy(go)l(al)9 b FD(\))35 b Fx(sibl)r(ing)s FD(\()p Fx(j)5 b(ack)s(;)14 b(j)5 b(il)r(l)r FD(\)?)52 b(The)34 b(system)g(w)n(ould) 515 1602 y(then)j(scan)f(through)h(the)g(rules)f(un)n(til)i(it)f (\014nds)g(some)g(rule)f(whic)n(h)h(has)f(the)i(predicate)515 1702 y FB(sibling)26 b FD(as)i(its)h(head.)40 b(After)29 b(\014nding)g(the)g(rule)g(presen)n(ted)f(ab)r(o)n(v)n(e,)g(the)h (system)g(w)n(ould)515 1802 y(substitute)f Fx(j)5 b(ack)30 b FD(for)d(the)h(v)-5 b(ariable)27 b Fx(X)34 b FD(\(denoted:)j Fx(X=j)5 b(ack)s FD(\))27 b(and)g Fx(j)5 b(il)r(l)28 b FD(for)f Fx(Y)46 b FD(\()p Fx(Y)9 b(=j)c(il)r(l)r FD(\).)639 1901 y(No)n(w)25 b(the)g(system)f(has)g(established)h(that)g(Jac)n(k)e (and)i(Jill)g(are)e(siblings)i(if)g(there)f(exists)515 2001 y(some)19 b Fx(Z)26 b FD(that)20 b(is)g(paren)n(t)f(of)h(b)r(oth)g (of)g(them.)35 b(Next,)21 b(the)g(system)e(w)n(ould)h(issue)f(a)h(new)g (query)515 2100 y(\(called)28 b(a)g Fy(sub)l(go)l(al)9 b FD(\))29 b Fx(par)r(ent)p FD(\()p Fx(Z)q(;)14 b(j)5 b(ack)s FD(\))28 b(in)h(order)e(to)h(\014nd)h(the)f(paren)n(t)g(of)g (Jac)n(k.)38 b(Supp)r(ose)515 2200 y(that)32 b(Joan)f(is)g(Jac)n(k's)g (mother.)49 b(Then)32 b(the)h(subgoal)d(succeeds)h(and)h(the)g(systems) g(\014nds)515 2300 y(the)c(substitution)g Fx(Z)q(=j)5 b(oan)p FD(.)639 2399 y(The)26 b(system)f(will)g(then)h(c)n(hec)n(k)f (whether)g(Joan)f(is)h(also)g(Jill's)g(mother)g(b)n(y)g(issuing)g(the) 515 2499 y(query)30 b Fx(par)r(ent)p FD(\()p Fx(j)5 b(oan;)14 b(j)5 b(il)r(l)r FD(\).)45 b(If)31 b(the)g(query)f(succeeds,)h(the)g (system)g(answ)n(ers)e Fu(y)n(es)h FD(to)h(our)515 2599 y(original)g(question)i(\()p Fx(sibl)r(ing)s FD(\()p Fx(j)5 b(ack)s(;)14 b(j)5 b(il)r(l)r FD(\)?\).)51 b(If)34 b(Joan)e(is)h(not)g(Jill's)g(mother,)h(the)g(query)515 2698 y(fails)k(and)g(the)h(logic)f(programming)e(engine)i(bac)n(ktrac)n (ks)e(and)j(tries)f(to)g(\014nd)h(another)515 2798 y(substitution)29 b(for)g Fx(Z)6 b FD(.)40 b(If)30 b(no)e(suc)n(h)h(substitutions)g(can)g (b)r(e)g(found,)h(the)f(systems)g(answ)n(ers)515 2897 y Fu(no)24 b FD(to)g(our)g(question.)36 b(If)25 b(there)f(are)f(more)h (than)h(one)f(rule)g(for)g(a)h(predicate,)f(the)h(rules)f(are)515 2997 y(tried)j(in)h(order.)36 b(If)28 b(one)f(fails,)g(the)h(next)g (one)f(is)h(c)n(hec)n(k)n(ed.)639 3097 y(Quite)f(often)f(the)h(logic)f (programs)e(can)i(b)r(e)h(divided)f(in)n(to)g(t)n(w)n(o)g(parts:)36 b(a)26 b(set)g(of)g(infer-)515 3196 y(ence)h(rules)g(and)h(a)f (database)f(of)i(facts)f(for)g(the)h(rules)f(to)h(mak)n(e)f(inferences) g(with.)639 3296 y(F)-7 b(or)27 b(example,)g(the)h(follo)n(wing)f (program)f(enco)r(des)h(a)g(simple)h(family)f(database.)515 3462 y FC(Program)k(1.1)722 3578 y FB(sibling\(X,Y\))39 b(:-)k(parent\(Z,X\),)38 b(parent\(Z,Y\).)722 3678 y(mother\(X,Y\))h (:-)k(parent\(X,Y\),)c(female\(X\).)722 3778 y(uncle\(X,Y\))h(:-)i (parent\(Z,)e(Y\),)j(sibling\(Z,X\),)38 b(male\(X\).)722 3877 y(female\(joan\).)82 b(female\(jill\).)g(male\(jack\).)722 3977 y(parent\(joan,)39 b(jack\).)85 b(parent\(joan,)38 b(jill\).)515 4251 y FA(1.2)135 b(Stable)46 b(Mo)t(del)f(Basics)515 4433 y FD(T)-7 b(raditional)30 b(logic)g(programming)e(systems)j(are)f (query-driv)n(en.)44 b(That)31 b(is,)h(y)n(ou)e(en)n(ter)g(a)515 4533 y(question)g(and)h(the)g(system)g(then)h(tries)e(to)h(\014nd)g(an) g(answ)n(er)f(to)g(it.)48 b(A)n(t)31 b(an)n(y)f(p)r(oin)n(t)h(only)515 4632 y(those)g(v)-5 b(ariables)31 b(that)h(are)f(someho)n(w)f(in)n(v)n (olv)n(ed)g(in)j(the)f(query)f(ha)n(v)n(e)f(v)-5 b(alues)32 b(binded)g(to)515 4732 y(them.)639 4832 y Fv(Smodels)19 b FD(w)n(orks)e(in)i(a)g(di\013eren)n(t)g(w)n(a)n(y)-7 b(.)33 b(In)19 b(the)h(\014rst)f(phase)f(all)h(v)-5 b(ariables)18 b(are)g(remo)n(v)n(ed)515 4931 y(from)27 b(the)g(program)e(b)n(y)i (substituting)h(all)f(p)r(ossible)g(v)-5 b(alues)27 b(for)g(them)g(in)h (all)f(rules.)36 b(This)1926 5255 y(6)p eop %%Page: 7 11 7 10 bop 515 523 a FD(phase)22 b(is)g(called)g(grounding)f(\(see)i (Section)f(4.3\))g(and)h(it's)f(the)h FB(lparse)p FD('s)d(job.)35 b(In)23 b(the)g(next)515 623 y(phase)k FB(smodels)e FD(computes)i(the)h (stable)f(mo)r(dels)h(of)f(the)h(program.)639 722 y(A)g(mo)r(del)f(is)g (a)g(set)g(of)g(atoms)g(that)g(satis\014es)f(ev)n(ery)g(rule)h(in)h (the)f(program.)35 b(A)27 b(rule)g(is)515 822 y(satis\014ed)j(if)h (either)f(its)h(head)f(is)g Fu(true)h FD(in)f(the)h(mo)r(del)g(or)e (some)h(literal)g(in)h(the)g(rule)f(b)r(o)r(dy)515 922 y(is)36 b Fu(false)p FD(.)64 b(A)37 b(mo)r(del)g(is)f(stable)h(when)g (it)g(meets)f(some)g(other)g(requiremen)n(ts,)i(that)f(are)515 1021 y(formalized)29 b(in)h(Section)g(4.2.)44 b(Informally)-7 b(,)30 b(a)f(mo)r(del)h(is)g(stable)g(if)h(ev)n(ery)d(atom)i(in)g(it)h (has)515 1121 y(some)h(\\reason")f(to)i(b)r(e)g(there:)48 b(for)32 b(eac)n(h)g(atom)h(in)g(the)h(mo)r(del)f(there)g(has)f(to)h(b) r(e)h(some)515 1220 y(rule)27 b(that)h(has)f(the)h(atom)f(as)g(a)g (head)h(suc)n(h)f(that)h(the)g(rule)f(b)r(o)r(dy)h(is)f Fu(true)h FD(in)g(the)g(mo)r(del.)639 1320 y(As)c(a)f(simple)h(example) f(of)h(what)f(stable)h(mo)r(dels)f(are)g(ab)r(out,)h(consider)f(the)h (follo)n(wing)515 1420 y(program)h(segmen)n(t)i(that)h(could)g (represen)n(t)e(a)h(part)g(of)h(a)f(PC)g(con\014guration)f(system:)515 1585 y FC(Program)31 b(1.2)722 1694 y FB(ide)p 859 1694 27 4 v 30 w(drive)42 b(:-)h(hard)p 1458 1694 V 29 w(drive,)f(not)g (scsi)p 2143 1694 V 30 w(drive.)722 1794 y(scsi)p 903 1794 V 30 w(drive)g(:-)g(hard)p 1501 1794 V 30 w(drive,)f(not)h(ide)p 2142 1794 V 31 w(drive.)722 1893 y(scsi)p 903 1893 V 30 w(controller)d(:-)k(scsi)p 1719 1893 V 30 w(drive.)722 1993 y(hard)p 903 1993 V 30 w(drive.)639 2145 y FD(Here)24 b(the)h(\014rst)f(rule)g(sa)n(ys)f(that)i(if)g(w)n(e)f(ha)n(v)n(e)f(a)h Fx(har)r(d)p 2278 2145 25 4 v 31 w(dr)r(iv)s(e)h FD(in)g(our)e (computer)h(and)g(w)n(e)515 2244 y(don't)g(ha)n(v)n(e)e(a)i Fx(scsi)p 1129 2244 V 29 w(dr)r(iv)s(e)p FD(,)h(w)n(e)f(m)n(ust)g(ha)n (v)n(e)e(an)i Fx(ide)p 2130 2244 V 29 w(dr)r(iv)s(e)h FD(in)f(it.)36 b(The)24 b(next)g(rule)f(sa)n(ys)g(the)515 2344 y(same)k(thing)i(ab)r(out)f Fx(scsi)p 1327 2344 V 29 w(dr)r(iv)s(e)p FD(:)39 b(if)28 b(w)n(e)g(ha)n(v)n(e)f(a)h Fx(har)r(d)p 2246 2344 V 31 w(dr)r(iv)s(e)g FD(that)h(is)f(not)g(an)g Fx(ide)p 3138 2344 V 29 w(dr)r(iv)s(e)p FD(,)515 2444 y(it)i(has)f(to)h(b)r(e)h(a)e Fx(scsi)p 1189 2444 V 29 w(dr)r(iv)s(e)p FD(.)45 b(The)30 b(third)g(rule)f(states)h(that)g(if)g (w)n(e)g(ha)n(v)n(e)f(a)g Fx(scsi)p 3062 2444 V 29 w(dr)r(iv)s(e)i FD(in)515 2543 y(the)i(computer,)g(w)n(e)f(m)n(ust)h(also)f(include)h (a)f Fx(scsi)p 2084 2543 V 29 w(contr)r(ol)r(l)r(er)j FD(in)e(it.)52 b(The)33 b(last)f(rule)g(is)g(a)515 2643 y(fact)27 b(that)h(tells)g(that)g(our)f(computer)g(has)g(a)g Fx(har)r(d)p 2127 2643 V 31 w(dr)r(iv)s(e)h FD(in)g(it.)639 2742 y(This)g(program)d(has)i(t)n(w)n(o)g(stable)h(mo)r(dels.)36 b(The)28 b(\014rst)f(one)h(is:)1407 2908 y Fx(M)1488 2920 y Ft(1)1548 2908 y FD(=)22 b Fz(f)p Fx(har)r(d)p 1856 2908 V 30 w(dr)r(iv)s(e;)14 b(ide)p 2227 2908 V 30 w(dr)r(iv)s(e)p Fz(g)515 3073 y FD(and)27 b(the)h(second)f(one)g (is:)1091 3238 y Fx(M)1172 3250 y Ft(2)1232 3238 y FD(=)c Fz(f)p Fx(har)r(d)p 1541 3238 V 30 w(dr)r(iv)s(e;)14 b(scsi)p 1944 3238 V 29 w(dr)r(iv)s(e;)g(scsi)p 2346 3238 V 30 w(contr)r(ol)r(l)r(er)r Fz(g)p Fx(:)639 3403 y FD(The)23 b(\014rst)f(t)n(w)n(o)f(rules)h(of)g(the)h(program)d (represen)n(t)h(a)h(c)n(hoice)g(p)r(oin)n(t:)34 b(if)23 b(w)n(e)f(ha)n(v)n(e)f(a)h(hard)515 3502 y(driv)n(e)27 b(in)g(the)h(computer,)g(w)n(e)f(m)n(ust)h(c)n(ho)r(ose)e(b)r(et)n(w)n (een)i(an)f(ide-driv)n(e)f(and)i(a)f(scsi-driv)n(e.)639 3602 y(If)f(w)n(e)g(add)g Fx(scsi)p 1149 3602 V 29 w(contr)r(ol)r(l)r (er)i FD(to)e(the)g(\014rst)f(stable)h(mo)r(del)g(the)g(resulting)f (set)h(of)g(atoms)515 3702 y(is)31 b(still)g(a)f(mo)r(del)i(of)e(the)i (program)d(in)i(the)g(prop)r(ositional)f(sense)g(but)i(it)f(is)g(no)g (longer)e(a)515 3801 y(stable)24 b(mo)r(del.)36 b(That)25 b(is)g(b)r(ecause)f Fx(scsi)p 1768 3801 V 29 w(contr)r(ol)r(l)r(er)k FD(is)c(needed)h(only)g(when)g Fx(scsi)p 3081 3801 V 29 w(dr)r(iv)s(e)g FD(is)515 3901 y(presen)n(t,)i(and)g(when)h(it)g(is) f(missing)g(there)h(is)f(no)g(reason)f(to)h(add)h Fx(scsi)p 2748 3901 V 29 w(contr)r(ol)r(l)r(er)i FD(in)e(the)515 4000 y(mo)r(del.)639 4100 y(The)k(seman)n(tics)g(of)g(ordinary)e(rules) h(matc)n(hes)h(that)g(of)g(logical)f(implication:)45 b(if)33 b(the)515 4200 y(b)r(o)r(dy)g(is)g(true,)h(the)f(head)f(m)n (ust)h(also)f(b)r(e)h(true.)53 b(In)33 b(the)g(program)e(ab)r(o)n(v)n (e,)i(w)n(e)f(used)h(re-)515 4299 y(cursiv)n(e)23 b(not-atoms)g(to)g (mo)r(del)i(a)e(c)n(hoice.)35 b(The)24 b(follo)n(wing)f(program)f (segmen)n(t)i(illustrates)515 4399 y(further)j(this)h(practice:)722 4508 y FB(a)43 b(:-)g(not)g(b.)722 4608 y(b)g(:-)g(not)g(a.)639 4707 y FD(If)20 b Fx(b)f FD(is)g(not)h Fu(true)p FD(,)h(then)f Fx(a)f FD(m)n(ust)h(b)r(e)g Fu(true)f FD(and)h(vice)f(v)n(ersa.)32 b(Ho)n(w)n(ev)n(er,)19 b(this)h(construction)515 4807 y(is)27 b(not)h(exclusiv)n(e)f(or)f(of)i(the)g(atoms,)f(since)g(it)h (is)g(p)r(ossible)f(that)h(some)f(other)g(part)g(of)h(the)515 4907 y(program)f(forces)i(b)r(oth)h Fx(a)g FD(and)f Fx(b)h FD(to)f(b)r(e)i Fu(true)p FD(.)43 b(T)-7 b(o)29 b(get)h(X)n(OR)f(one)g (should)h(add)f(a)h(rule)f(of)515 5006 y(the)f(form:)1926 5255 y(7)p eop %%Page: 8 12 8 11 bop 1034 1848 a @beginspecial -34 @llx -15 @lly 185 @urx 154 @ury 2190 @rwi @setspecial %%BeginDocument: lparse_overview.1 %!PS %%BoundingBox: -34 -15 185 154 %%Creator: MetaPost %%CreationDate: 2001.05.21:2014 %%Pages: 1 %*Font: cmtt10 14.94397 9.96265 61:981b6 %*Font: cmr10 14.94397 9.96265 41:800108008a0e62 %*Font: cmtt10 5.97765 9.96265 2d:dc04080002000d81e72 %%EndProlog %%Page: 1 1 -14.7987 132.7767 moveto (User) cmr10 14.94397 fshow -28.3728 114.84404 moveto (Program) cmr10 14.94397 fshow 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash 1 setlinejoin 10 setmiterlimit newpath -32.88795 102.0474 moveto 32.88795 102.0474 lineto 32.88795 152.87924 lineto -32.88795 152.87924 lineto closepath stroke 118.19576 124.5576 moveto (lparse) cmtt10 14.94397 fshow newpath 108.8443 102.0474 moveto 174.62021 102.0474 lineto 174.62021 152.87924 lineto 108.8443 152.87924 lineto closepath stroke -24.13876 20.31015 moveto (Answ) cmr10 14.94397 fshow 11.64389 20.31015 moveto (er) cmr10 14.94397 fshow newpath -32.88795 0 moveto 32.88795 0 lineto 32.88795 50.83185 lineto -32.88795 50.83185 lineto closepath stroke 114.27295 20.8497 moveto (smodels) cmtt10 14.94397 fshow newpath 108.8443 0 moveto 174.62021 0 lineto 174.62021 50.83185 lineto 108.8443 50.83185 lineto closepath stroke 1 setlinecap newpath 32.88795 127.46332 moveto 44.17288 134.86095 57.37263 138.80174 70.86613 138.80174 curveto 84.35962 138.80174 97.55937 134.86095 108.8443 127.46332 curveto stroke newpath 104.89435 128.0954 moveto 106.2143 127.9231 107.53148 127.71246 108.8443 127.46332 curveto 108.09218 128.56781 107.30975 129.64816 106.49826 130.70334 curveto closepath gsave fill grestore stroke 56.74405 148.97493 moveto (a:-not) cmtt10 5.97765 fshow 78.71172 148.97493 moveto (b.) cmtt10 5.97765 fshow 56.74405 141.80174 moveto (b:-not) cmtt10 5.97765 fshow 78.71172 141.80174 moveto (a) cmtt10 5.97765 fshow newpath 141.73225 102.0474 moveto 145.4668 94.02701 147.40189 85.28683 147.40189 76.43962 curveto 147.40189 67.5924 145.4668 58.85223 141.73225 50.83185 curveto stroke newpath 141.77263 54.83179 moveto 141.80309 53.50043 141.78976 52.16641 141.73225 50.83185 curveto 142.71661 51.73483 143.66936 52.6687 144.58925 53.63162 curveto closepath gsave fill grestore stroke 156.07066 88.95946 moveto (1) cmtt10 5.97765 fshow 162.34714 88.95946 moveto (1) cmtt10 5.97765 fshow 168.62363 88.95946 moveto (1) cmtt10 5.97765 fshow 174.90005 88.95946 moveto (1) cmtt10 5.97765 fshow 181.17654 88.95946 moveto (2) cmtt10 5.97765 fshow 156.07066 81.78627 moveto (1) cmtt10 5.97765 fshow 162.34714 81.78627 moveto (2) cmtt10 5.97765 fshow 168.62363 81.78627 moveto (1) cmtt10 5.97765 fshow 174.90005 81.78627 moveto (1) cmtt10 5.97765 fshow 181.17654 81.78627 moveto (1) cmtt10 5.97765 fshow 156.07066 74.61308 moveto (0) cmtt10 5.97765 fshow 156.07066 67.43994 moveto (1) cmtt10 5.97765 fshow 162.34714 67.43994 moveto (b) cmtt10 5.97765 fshow 156.07066 60.26675 moveto (1) cmtt10 5.97765 fshow 162.34714 60.26675 moveto (a) cmtt10 5.97765 fshow newpath 108.8443 25.41592 moveto 97.55937 18.01831 84.35962 14.07751 70.86612 14.07751 curveto 57.37262 14.07751 44.17288 18.01831 32.88795 25.41592 curveto stroke newpath 36.8379 24.78384 moveto 35.51796 24.95615 34.20078 25.16678 32.88795 25.41592 curveto 33.64008 24.31143 34.4225 23.23108 35.234 22.1759 curveto closepath gsave fill grestore stroke 45.76024 7.4245 moveto (Answer:) cmtt10 5.97765 fshow 74.0044 7.4245 moveto (1) cmtt10 5.97765 fshow 45.76024 0.25131 moveto (Stable) cmtt10 5.97765 fshow 67.7279 0.25131 moveto (model:) cmtt10 5.97765 fshow 92.83377 0.25131 moveto (a) cmtt10 5.97765 fshow 45.76024 -6.92183 moveto (Answer:) cmtt10 5.97765 fshow 74.0044 -6.92183 moveto (2) cmtt10 5.97765 fshow 45.76024 -14.09502 moveto (Stable) cmtt10 5.97765 fshow 67.7279 -14.09502 moveto (model:) cmtt10 5.97765 fshow 92.83377 -14.09502 moveto (b) cmtt10 5.97765 fshow showpage %%EOF %%EndDocument @endspecial 1232 2114 a FD(Figure)27 b(1.1:)36 b(The)28 b(w)n(a)n(y)e(of)i(a)f(logic)g(program)722 2379 y FB(:-)43 b(a,)g(b.)639 2479 y FD(to)29 b(the)g(program.)37 b(Rules)29 b(without)g(heads)f(act)g(as)g(in)n(tegrit)n(y)g(constrain)n(ts;)g(if)h (a)f(b)r(o)r(dy)515 2578 y(of)f(suc)n(h)h(a)f(rule)g(is)g(satis\014ed,) h(the)g(mo)r(del)f(candidate)h(is)f(rejected.)515 2853 y FA(1.3)135 b(A)44 b(Practical)i(Example)515 3035 y FD(The)28 b(basic)g(concepts)f(are)g(in)n(tro)r(duced)h(here)g(b)n(y)g (using)g(the)g Fv(node)k(coloring)c FD(problem)515 3134 y(as)23 b(an)h(example.)36 b(In)24 b(a)g Fv(node)k(coloring)23 b FD(instance)h(w)n(e)g(are)g(giv)n(en)f(a)h(set)g(of)g(no)r(des)g(and) g(a)515 3234 y(set)29 b(of)f(edges)g(that)i(connect)e(the)h(no)r(des.) 41 b(The)29 b(problem)f(is)h(to)g(use)f(some)g(\014xed)h(n)n(um)n(b)r (er)515 3334 y(of)g(colors)e(to)j(color)d(eac)n(h)i(no)r(de)g(so)g (that)g(t)n(w)n(o)g(adjacen)n(t)f(no)r(des)h(don't)h(ha)n(v)n(e)e(same) g(color.)515 3433 y(In)g(this)f(example)h(w)n(e)f(use)g(three)h (colors:)35 b(red,)27 b(blue,)h(and)g(y)n(ello)n(w.)639 3533 y(As)i(this)f(example)g(uses)g(only)g(basic)f(rules,)h(it)h(is)f (quite)h(long.)41 b(In)29 b(Chapter)g(6)g(w)n(e)f(see)515 3633 y(ho)n(w)22 b(the)h(extended)g(rules)f(can)g(b)r(e)h(used)f(to)h (enco)r(de)f(this)h(problem)f(using)h(only)f(t)n(w)n(o)g(rules.)639 3732 y(The)28 b Fv(node)j(coloring)c FD(can)g(b)r(e)h(implemen)n(ted)h (with)f(the)g(follo)n(wing)e(program.)515 3898 y FC(Program)31 b(1.3)722 4015 y FB(color\(red\).)83 b(color\(blue\).)f (color\(yellow\).)722 4114 y(col\(X,red\))40 b(:-)i(node\(X\),)f(not)h (col\(X,)f(blue\),)g(not)i(col\(X,yellow\).)722 4214 y(col\(X,blue\))c(:-)k(node\(X\),)d(not)j(col\(X,)e(red\),)g(not)i (col\(X,yellow\).)722 4313 y(col\(X,yellow\))38 b(:-)43 b(node\(X\),)e(not)h(col\(X,)f(blue\),)g(not)h(col\(X,red\).)722 4413 y(fail)g(:-)h(edge\(X,Y\),)c(color\(C\),)h(col\(X,C\),)g (col\(Y,C\).)722 4513 y(node\(a\).)84 b(node\(b\).)722 4612 y(node\(c\).)g(node\(d\).)722 4712 y(edge\(a,b\).)f(edge\(b,c\).) 722 4812 y(edge\(c,d\).)g(edge\(d,a\).)722 4911 y(compute)41 b(1)i Fz(f)g FB(not)g(fail)f Fz(g)p FB(.)1926 5255 y FD(8)p eop %%Page: 9 13 9 12 bop 1714 907 a @beginspecial -7 @llx -7 @lly 49 @urx 49 @ury 560 @rwi @setspecial %%BeginDocument: node_color.1 %!PS %%BoundingBox: -7 -7 49 49 %%Creator: MetaPost %%CreationDate: 2001.05.21:2014 %%Pages: 1 %*Font: cmmi10 9.96265 9.96265 61:f %%EndProlog %%Page: 1 1 -2.63306 40.37492 moveto (a) cmmi10 9.96265 fshow 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash 1 setlinejoin 10 setmiterlimit newpath 5.39603 42.51968 moveto 5.39603 45.49983 2.98015 47.91571 0 47.91571 curveto -2.98015 47.91571 -5.39603 45.49983 -5.39603 42.51968 curveto -5.39603 39.53954 -2.98015 37.12366 0 37.12366 curveto 2.98015 37.12366 5.39603 39.53954 5.39603 42.51968 curveto closepath stroke 40.38188 39.06042 moveto (b) cmmi10 9.96265 fshow newpath 48.58621 42.51968 moveto 48.58621 45.87013 45.87013 48.58621 42.51968 48.58621 curveto 39.16924 48.58621 36.45316 45.87013 36.45316 42.51968 curveto 36.45316 39.16924 39.16924 36.45316 42.51968 36.45316 curveto 45.87013 36.45316 48.58621 39.16924 48.58621 42.51968 curveto closepath stroke 40.36398 -2.14476 moveto (c) cmmi10 9.96265 fshow newpath 47.56058 0 moveto 47.56058 2.78401 45.3037 5.0409 42.51968 5.0409 curveto 39.73567 5.0409 37.47879 2.78401 37.47879 0 curveto 37.47879 -2.78401 39.73567 -5.0409 42.51968 -5.0409 curveto 45.3037 -5.0409 47.56058 -2.78401 47.56058 0 curveto closepath stroke -2.5927 -3.45926 moveto (d) cmmi10 9.96265 fshow newpath 6.32303 0 moveto 6.32303 3.49211 3.49211 6.32303 0 6.32303 curveto -3.49211 6.32303 -6.32303 3.49211 -6.32303 0 curveto -6.32303 -3.49211 -3.49211 -6.32303 0 -6.32303 curveto 3.49211 -6.32303 6.32303 -3.49211 6.32303 0 curveto closepath stroke 1 setlinecap newpath 5.39607 42.51968 moveto 36.4529 42.51968 lineto stroke 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth newpath 42.51968 36.4534 moveto 42.51968 5.04117 lineto stroke 0 0.5 dtransform truncate idtransform setlinewidth pop newpath 37.47852 0 moveto 6.32323 0 lineto stroke 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth newpath 0 6.32318 moveto 0 37.12357 lineto stroke showpage %%EOF %%EndDocument @endspecial 1258 1172 a FD(Figure)27 b(1.2:)36 b(The)28 b(graph)e(of)i(Program)d(1.3)639 1438 y(The)j(\014rst)f(line:)722 1554 y FB(color\(red\).)83 b(color\(blue\).)f(color\(yellow\).)639 1653 y FD(de\014nes)33 b(the)g(colors)e(w)n(e)h(are)g(allo)n(w)n(ed)f (to)h(use.)52 b(The)33 b(predicate)f Fx(col)r(or)j FD(is)e(de\014ned)g (in)515 1753 y(suc)n(h)f(w)n(a)n(y)g(that)h(it)g(can)g(b)r(e)g(used)g (as)f(a)g(domain)h(predicate)f(\(see)h(Section)f(4.4\))h(later)f(in)515 1853 y(the)c(program.)639 1952 y(The)g(rule,)722 2069 y FB(col\(X,red\))40 b(:-)i(node\(X\),)f(not)h(col\(X,)f(blue\),)g(not) i(col\(X,yellow\).)639 2168 y FD(states)24 b(that)h(if)f(a)g(no)r(de)g (is)g(not)h Fx(bl)r(ue)d FD(and)i(it)h(is)f(not)g Fx(y)s(el)r(l)r(ow)r FD(,)g(then)h(the)g(no)r(de)f(has)g(to)g(b)r(e)515 2268 y Fx(r)r(ed)p FD(.)37 b(The)26 b(next)g(t)n(w)n(o)f(rules)g(are)g (otherwise)g(iden)n(tical)g(but)i(they)f(are)f(for)g(colors)f Fx(bl)r(ue)g FD(and)515 2367 y Fx(y)s(el)r(l)r(ow)r FD(.)34 b(Here)22 b(the)g(predicate)f Fx(node)p FD(\()p Fx(X)7 b FD(\))22 b(acts)g(as)f(a)h(domain)f(predicate)h(that)g(en)n(umerates) 515 2467 y(the)28 b(p)r(ossible)f(v)-5 b(alues)27 b(of)h(the)g(v)-5 b(ariable)26 b Fx(X)7 b FD(.)639 2567 y(The)28 b(rule)722 2683 y FB(fail)42 b(:-)h(edge\(X,Y\),)c(color\(C\),)h(col\(X,C\),)g (col\(Y,C\).)639 2783 y FD(ensures)26 b(that)h(neigh)n(b)r(ouring)f(no) r(des)h(ha)n(v)n(e)e(di\013eren)n(t)i(colors.)35 b(The)27 b(atom)g Fy(fail)h FD(is)f(true)515 2882 y(exactly)c(when)h(t)n(w)n(o)e (connected)i(no)r(des)f(ha)n(v)n(e)g(the)h(same)f(color.)34 b(Later)23 b(w)n(e)g(force)g FB(smodels)515 2982 y FD(to)36 b(searc)n(h)g(for)g(only)g(mo)r(dels)h(where)f Fy(fail)i FD(is)f(not)g(true.)64 b(Here)36 b(the)h(predicate)f Fx(node)h FD(is)515 3081 y(not)31 b(needed)g(to)g(giv)n(e)f(domain)h (for)f(no)r(de)i(v)-5 b(ariables)29 b Fx(X)38 b FD(and)31 b Fx(Y)50 b FD(b)r(ecause)30 b Fx(edg)s(e)h FD(is)f(also)g(a)515 3181 y(domain)d(predicate.)639 3281 y(The)h(next)g(part)f(of)g(the)h (program:)722 3397 y FB(node\(a\).)84 b(node\(b\).)722 3497 y(node\(c\).)g(node\(d\).)722 3596 y(edge\(a,b\).)f(edge\(b,c\).) 722 3696 y(edge\(c,d\).)g(edge\(d,a\).)639 3795 y FD(de\014nes)27 b(a)f(simple)h(graph)e(with)i(four)f(no)r(des)g(and)h(four)f(edges.)36 b(This)26 b(graph)f(is)i(sho)n(wn)515 3895 y(in)g(Figure)f(1.2.)36 b(Usually)-7 b(,)27 b(the)h(graph)d(is)i(stored)f(in)i(another)e (\014le)h(so)f(that)h(w)n(e)g(don't)g(ha)n(v)n(e)515 3995 y(to)g(duplicate)h(the)g(inference)f(rules)g(for)h(eac)n(h)e (graph.)639 4094 y(The)i(last)f(line)h(of)g(the)g(program:)722 4210 y FB(compute)41 b(1)i Fz(f)g FB(not)g(fail)f Fz(g)p FB(.)639 4310 y FD(tells)28 b FB(smodels)e FD(that)i(w)n(e)g(w)n(an)n (t)f(only)h(one)f(mo)r(del)i(and)f(that)g(the)g(atom)g Fy(fail)i FD(ma)n(y)d(not)515 4410 y(b)r(e)j(in)g(the)g(mo)r(del.)43 b(This)29 b(rules)g(out)h(all)f(mo)r(dels)h(where)f(t)n(w)n(o)g (adjacen)n(t)g(no)r(des)g(ha)n(v)n(e)g(the)515 4509 y(same)e(color.)639 4609 y(The)37 b(atom)g Fy(fail)h FD(is)f(used)g(to)f(signal)g(that)i (something)e(is)h(wrong)e(with)j(the)f(mo)r(del,)515 4709 y(namely)27 b(that)i(t)n(w)n(o)e(adjacen)n(t)g(no)r(des)h(ha)n(v)n (e)f(the)h(same)g(color.)37 b(Later)27 b(in)h(the)g(program)e(w)n(e)515 4808 y(demand)h(that)h Fy(fail)i FD(ma)n(y)c(not)i(b)r(e)g(true)f(in)h (an)n(y)f(stable)g(mo)r(del)h(of)g(the)g(program.)639 4908 y(The)g(same)f(e\013ect)h(could)f(b)r(e)h(ac)n(hiev)n(ed)f(b)n(y)g (using)g(construction:)1926 5255 y(9)p eop %%Page: 10 14 10 13 bop 1668 1082 a @beginspecial -15 @llx -17 @lly 52 @urx 60 @ury 670 @rwi @setspecial %%BeginDocument: node_color.2 %!PS %%BoundingBox: -15 -17 52 60 %%Creator: MetaPost %%CreationDate: 2001.05.21:2014 %%Pages: 1 %*Font: cmmi10 9.96265 9.96265 61:f8124a8 %%EndProlog %%Page: 1 1 -2.63306 40.37492 moveto (a) cmmi10 9.96265 fshow 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash 1 setlinejoin 10 setmiterlimit newpath 5.39603 42.51968 moveto 5.39603 45.49983 2.98015 47.91571 0 47.91571 curveto -2.98015 47.91571 -5.39603 45.49983 -5.39603 42.51968 curveto -5.39603 39.53954 -2.98015 37.12366 0 37.12366 curveto 2.98015 37.12366 5.39603 39.53954 5.39603 42.51968 curveto closepath stroke 40.38188 39.06042 moveto (b) cmmi10 9.96265 fshow newpath 48.58621 42.51968 moveto 48.58621 45.87013 45.87013 48.58621 42.51968 48.58621 curveto 39.16924 48.58621 36.45316 45.87013 36.45316 42.51968 curveto 36.45316 39.16924 39.16924 36.45316 42.51968 36.45316 curveto 45.87013 36.45316 48.58621 39.16924 48.58621 42.51968 curveto closepath stroke 40.36398 -2.14476 moveto (c) cmmi10 9.96265 fshow newpath 47.56058 0 moveto 47.56058 2.78401 45.3037 5.0409 42.51968 5.0409 curveto 39.73567 5.0409 37.47879 2.78401 37.47879 0 curveto 37.47879 -2.78401 39.73567 -5.0409 42.51968 -5.0409 curveto 45.3037 -5.0409 47.56058 -2.78401 47.56058 0 curveto closepath stroke -2.5927 -3.45926 moveto (d) cmmi10 9.96265 fshow newpath 6.32303 0 moveto 6.32303 3.49211 3.49211 6.32303 0 6.32303 curveto -3.49211 6.32303 -6.32303 3.49211 -6.32303 0 curveto -6.32303 -3.49211 -3.49211 -6.32303 0 -6.32303 curveto 3.49211 -6.32303 6.32303 -3.49211 6.32303 0 curveto closepath stroke 1 setlinecap newpath 5.39607 42.51968 moveto 36.4529 42.51968 lineto stroke 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth newpath 42.51968 36.4534 moveto 42.51968 5.04117 lineto stroke 0 0.5 dtransform truncate idtransform setlinewidth pop newpath 37.47852 0 moveto 6.32323 0 lineto stroke 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth newpath 0 6.32318 moveto 0 37.12357 lineto stroke -14.2239 52.8529 moveto (y) cmmi10 9.96265 fshow -8.98201 52.8529 moveto (el) cmmi10 9.96265 fshow -1.17441 52.8529 moveto (l) cmmi10 9.96265 fshow 1.9943 52.8529 moveto (ow) cmmi10 9.96265 fshow 33.62648 51.58621 moveto (bl) cmmi10 9.96265 fshow 41.07079 51.58621 moveto (ue) cmmi10 9.96265 fshow -8.8932 -16.24153 moveto (bl) cmmi10 9.96265 fshow -1.4489 -16.24153 moveto (ue) cmmi10 9.96265 fshow 35.22179 -14.9594 moveto (r) cmmi10 9.96265 fshow 39.99329 -14.9594 moveto (ed) cmmi10 9.96265 fshow showpage %%EOF %%EndDocument @endspecial 1255 1347 a FD(Figure)27 b(1.3:)37 b(An)28 b(answ)n(er)e(of)h(Program)e(1.3)722 1613 y FB(:-)43 b(edge\(X,Y\),)c(color\(C\),)h(col\(X,C\),)g(col\(Y,C\).)639 1712 y FD(Rules)21 b(with)g(empt)n(y)g(heads)f(w)n(ork)f(as)h (constrain)n(ts)f(on)i(the)g(mo)r(dels)f(of)h(the)g(program.)33 b(If)515 1812 y(a)25 b(v)-5 b(ariable)24 b(binding)h(mak)n(es)f(the)i (the)g(b)r(o)r(dy)f(of)g(the)h(rule)f(true,)h(the)f(binding)h(is)f (discarded)515 1911 y(as)i(there's)g(no)g(w)n(a)n(y)g(to)g(satisfy)g (its)h(head.)639 2011 y(The)k(co)r(de)f(of)h(the)g Fv(node)j(coloring)c FD(example)h(is)f(stored)g(in)h(directory)f FB(examples)515 2111 y FD(as)i FB(color1.lp)e FD(of)k(the)f FB(lparse)e FD(distriburion.)57 b(The)35 b(example)f(graph)f(is)h(in)h(the)g(same) 515 2210 y(directory)26 b(as)h FB(graph1)p FD(.)639 2310 y(The)h(pro)r(cess)e(of)i(running)f(this)h(program)e(through)g(smo)r (dels)i(w)n(ould)f(lo)r(ok)g(lik)n(e:)722 2426 y FB(\045)43 b(lparse)f(color1.lp)d(graph1)j(|)h(smodels)722 2526 y(smodels)e(version)g(2.10.)85 b(Reading...done)722 2625 y(Answer:)g(1)722 2725 y(Stable)41 b(Model:)85 b(edge\(d,a\))40 b(edge\(c,d\))g(edge\(a,b\))g(edge\(b,c\))722 2825 y(node\(a\))h (node\(d\))g(node\(c\))f(node\(b\))h(col\(a,yellow\))d(col\(c,red\))722 2924 y(col\(d,blue\))h(col\(b,blue\))g(color\(yellow\))g(color\(red\))g (color\(blue\))722 3024 y(True)722 3124 y(Duration:)84 b(0.030)722 3223 y(Number)41 b(of)i(choice)e(points:)85 b(3)722 3323 y(Number)41 b(of)i(wrong)f(choices:)84 b(0)722 3422 y(Number)41 b(of)i(atoms:)85 b(24)722 3522 y(Number)41 b(of)i(rules:)85 b(35)722 3622 y(Number)41 b(of)i(picked)e(atoms:)85 b(45)722 3721 y(Number)41 b(of)i(forced)e(atoms:)85 b(0)722 3821 y(Number)41 b(of)i(truth)f(assignments:)82 b(152)722 3921 y(Size)42 b(of)h(searchspace)c(\(removed\):)83 b(12)43 b(\(0\))639 4020 y FD(As)26 b(the)g(\014rst)f(line)g(of)h(output,)g FB(smodels)d FD(prin)n(ts)i(its)g(v)n(ersion)f(information.)35 b(The)26 b(next)515 4120 y(lines)31 b(giv)n(e)e(the)j(\014rst)e(mo)r (del)h(found.)47 b(In)31 b(the)g(mo)r(del)g(no)r(des)g Fx(d)g FD(and)g Fx(b)f FD(are)g(colored)g(blue,)515 4219 y(no)r(de)d Fx(a)h FD(is)f(y)n(ello)n(w)g(and)g(no)r(de)h Fx(c)f FD(is)h(red.)36 b(The)28 b(answ)n(er)e(is)i(also)e(sho)n(wn)h (in)h(Figure)f(1.3.)639 4319 y(The)i(w)n(ord)f FB(true)f FD(b)r(elo)n(w)i(the)g(mo)r(del)g(tells)g(that)h(there)e(ma)n(y)h(b)r (e)g(also)f(other)g(mo)r(dels,)515 4419 y(but)i FB(smodels)d FD(didn't)j(compute)g(them)1773 4389 y Ft(2)1810 4419 y FD(.)43 b(If)30 b(there)f(are)g(no)g(mo)r(dels)h(left,)h(the)e(line)h (reads)515 4518 y FB(false)p FD(.)k(The)25 b(same)f(message)g(is)g (also)g(displa)n(y)n(ed)g(when)h(the)g(program)e(has)i(no)f(mo)r(dels)h (at)515 4618 y(all.)639 4718 y(The)e(rest)f(of)g(the)h(lines)g(giv)n(e) f(some)f(statistics)i(ab)r(out)f(y)n(our)g(program.)33 b(The)22 b FB(duration)p 515 4771 1146 4 v 607 4824 a Fs(2)642 4848 y Fr(It's)28 b(p)r(ossible)f(that)i(there)f(are)g(no)g (more)e(mo)r(dels,)h(but)h(smo)r(dels)f(rep)r(orts)g Fq(true)i Fr(alw)n(a)n(ys)f(when)g(the)515 4927 y(whole)c(searc)n(h)g (space)g(is)f(not)i(explored.)1905 5255 y FD(10)p eop %%Page: 11 15 11 14 bop 515 523 a FD(tells)27 b(ho)n(w)g(long)g(the)h(searc)n(h)e(to) r(ok)h(in)h(seconds.)639 623 y(The)k(n)n(um)n(b)r(er)g(of)f Fy(choic)l(e)36 b(p)l(oints)j FD(tell)32 b(ho)n(w)f(man)n(y)g(times)h FB(smodels)d FD(had)j(to)g(guess)e(a)515 722 y(truth)k(v)-5 b(alue)34 b(for)g(a)g(ground)f(atom.)56 b(This)34 b(time)g FB(smodels)e FD(guessed)h(the)h(correct)f(v)-5 b(alue)515 822 y(for)38 b(eac)n(h)f(atom)h(\(n)n(um)n(b)r(er)g(of)g Fy(wr)l(ong)i(choic)l(es)47 b FD(is)38 b(zero\))g(and)g(th)n(us)g(it)h (didn't)g(ha)n(v)n(e)e(to)515 922 y(bac)n(ktrac)n(k.)639 1021 y(The)31 b(next)g(lines)g(tell)g(that)h(there)e(w)n(ere)g(a)h (total)f(of)h(24)f Fy(atoms)38 b FD(and)31 b(35)f Fy(rules)38 b FD(in)31 b(the)515 1121 y(grounded)37 b(program)e(\(the)k(original)d (had)i(four)f(non-ground)f(rules,)k(11)d(facts,)j(and)e(12)515 1220 y(atoms\).)60 b(In)36 b(general,)g(the)g(n)n(um)n(b)r(er)f(of)h(c) n(hoice)e(p)r(oin)n(ts)i(is)f(more)g(imp)r(ortan)n(t)g(than)h(the)515 1320 y(n)n(um)n(b)r(er)27 b(of)h(rules)f(or)f(atoms)h(when)h(w)n(e)f(w) n(an)n(t)g(to)h(compare)e(complexities)h(of)h(problems.)639 1420 y(The)j(rest)e(of)i(the)f(lines)g(sho)n(w)g(ho)n(w)f(the)i FB(smodels)d FD(heuristics)h(w)n(ork)n(ed)g(for)h(this)g(pro-)515 1519 y(gram.)63 b(The)36 b(n)n(um)n(b)r(er)h(of)f Fy(picke)l(d)k(atoms) k FD(tell)37 b(ho)n(w)f(man)n(y)g(times)h(smo)r(dels)f(lo)r(ok)-5 b(ahead)515 1619 y(heuristics)35 b(managed)h(to)g(pic)n(k)f(a)h(truth)h (v)-5 b(alue)36 b(to)g(an)g(atom.)62 b(The)36 b(n)n(um)n(b)r(er)g(of)g Fy(for)l(c)l(e)l(d)515 1719 y(atoms)42 b FD(tell)35 b(ho)n(w)f(man)n(y) g(atoms)g(w)n(ere)g(added)h(to)g(the)g(mo)r(del)g(b)r(ecause)f(their)h (negation)515 1818 y(w)n(ould)26 b(ha)n(v)n(e)g(caused)g(a)g(con)n (tradiction.)35 b(The)27 b(n)n(um)n(b)r(er)g(of)f Fy(truth)i (assignments)34 b FD(tells)27 b(ho)n(w)515 1918 y(man)n(y)g(times)h FB(smodels)c FD(assigned)j(a)g(truth)h(v)-5 b(alue)27 b(to)h(an)f(atom.)p 432 1984 4 17 v 432 2017 V 432 2050 V 432 2083 V 432 2117 V 432 2150 V 432 2183 V 432 2216 V 432 2249 V 432 2283 V 432 2316 V 432 2349 V 432 2382 V 432 2415 V 639 2025 a(The)g Fy(size)j(of)g(se)l(ar)l(chsp)l(ac)l(e)62 b FD(tells)27 b(the)g(maxim)n(um)g(n)n(um)n(b)r(er)g(of)g(c)n(hoices)e (w)n(e)i(ma)n(y)f(ha)n(v)n(e)515 2124 y(to)j(do)g(b)r(efore)f(w)n(e)h (can)g(b)r(e)g(certain)g(whether)g(a)f(mo)r(del)i(exists)e(or)g(not.)42 b(In)29 b(this)g(example)515 2224 y(the)23 b(size)g(of)g(the)h(searc)n (h)d(space)i(is)g(half)g(the)h(n)n(um)n(b)r(er)f(of)g(atoms,)g(since)g (the)h(elev)n(en)e(domain)515 2324 y(predicates)31 b(are)g(alw)n(a)n (ys)f(true)i(and)f(the)i(truth)f(v)-5 b(alue)32 b(of)g Fy(fail)42 b FD(dep)r(ends)32 b(directly)g(on)g(the)515 2423 y(v)-5 b(alues)27 b(of)h(the)f(color)g(predicates.)639 2523 y(It)f(is)f(often)g(useful)h(to)f(b)r(e)g(able)g(to)g(see)g(what)g (exactly)f(is)h(output)h(from)e FB(lparse)p FD(.)34 b(This)515 2623 y(can)27 b(b)r(e)h(accomplished)f(b)n(y)g(using)g(the)h FB(-t)f FD(command)g(line)h(argumen)n(t:)722 2755 y FB(\045)43 b(lparse)f(-t)g(color1.lp)e(graph1)722 2855 y(edge\(d,a\).)722 2955 y(edge\(c,d\).)722 3054 y(edge\(a,b\).)722 3154 y(edge\(b,c\).)722 3254 y(node\(a\).)722 3353 y(node\(d\).)722 3453 y(node\(c\).)722 3552 y(node\(b\).)722 3652 y(fail)i(:-)h (col\(d,yellow\),)38 b(col\(a,yellow\).)722 3752 y(fail)k(:-)h (col\(c,yellow\),)38 b(col\(d,yellow\).)722 3851 y(fail)k(:-)h (col\(a,yellow\),)38 b(col\(b,yellow\).)722 3951 y FD([24)27 b(further)h(output)g(lines)f(snipp)r(ed])722 4051 y FB(compute)41 b(1)i Fz(f)g FB(not)g(fail)f Fz(g)639 4150 y FD(A)n(t)26 b(the)g(b)r(eginning)g(of)g(this)g(program)d(the)j(domain)f(predicates) g(are)g(output)h(just)g(lik)n(e)515 4250 y(they)33 b(w)n(ere)g(en)n (tered)g(in)h(the)f(input)i(program.)52 b(The)34 b(next)f(three)h (lines)f(de\014ne)h(three)f(of)515 4349 y(the)26 b(cases)e(where)h(the) h(constrain)n(ts)e(of)i(the)g(problem)f(instance)g(are)f(brok)n(en)h(b) r(ecause)g(t)n(w)n(o)515 4449 y(neigh)n(b)r(oring)h(no)r(des)h(ha)n(v)n (e)g(the)h(same)f(color.)515 4724 y FA(1.4)135 b(Di\013eren)l(t)47 b(Smo)t(dels)e(F)-11 b(ron)l(t-Ends)515 4905 y FD(Curren)n(tly)k(,)27 b(there)g(is)g(a)h(host)f(of)h(di\013eren)n(t)f(fron)n(t-ends)g(to)g (smo)r(dels:)1905 5255 y(11)p eop %%Page: 12 16 12 15 bop 616 523 a FD(1.)41 b FB(lparse)36 b FD(is)j(the)g(most)f (feature-ric)n(h)f(of)i(the)f(di\013eren)n(t)h(parsers)e(and)h(fron)n (t)g(ends)722 623 y(and)31 b(it)h(is)f(the)h(default)f(one)g(y)n(ou)g (should)g(use)g(when)g(y)n(ou)g(are)f(writing)i Fv(Smodels)722 722 y FD(programs.)616 888 y(2.)41 b FB(smodels)34 b FD(API)h(is)h(a)g(library)f(in)n(terface)g(that)i(allo)n(ws)d(y)n(ou)i (to)g(call)f(the)i FB(smodels)722 988 y FD(pro)r(cedure)e(from)g(an)n (y)g(C++)g(program.)59 b(Curren)n(tly)-7 b(,)37 b(there)e(is)h(no)f (single)g(do)r(cu-)722 1088 y(men)n(t)j(that)g(explains)f(the)h(API)g (but)g(the)g(example)f(directory)f(of)i(the)g FB(smodels)722 1187 y FD(distribution)28 b(con)n(tains)f(four)g(examples)g(on)g(using) g(it.)616 1353 y(3.)41 b Fy(p)l(arse)47 b FD(is)39 b(the)h(original)e (parser)g(of)i(smo)r(dels.)73 b(It)40 b(pro)r(duces)e(only)j FB(smodels)c FD(1.x)722 1453 y(output,)28 b(and)g(is)f(no)n(w)g (outdated.)616 1619 y(4.)41 b Fy(pp)l(arse)36 b FD(\(\\primitiv)n(e)28 b(parser"\))f(is)h(a)g(simple)h(parser)e(that)h(pro)r(duces)g FB(smodels)e FD(2.x)722 1719 y(output)e(but)g(it)g(accepts)f(only)g (ground)g(programs.)33 b(Its)23 b(syn)n(tax)g(for)g(extended)h(rules) 722 1818 y(is)k(di\013eren)n(t)f(from)h FB(lparse)p FD('s)d(syn)n(tax.) 616 1984 y(5.)41 b Fy(mcsmo)l(dels)51 b FD(\(\\mo)r(del)42 b(c)n(hec)n(king)f(smo)r(dels"\))h(is)h(a)f(deadlo)r(c)n(k)f(and)i (reac)n(habilit)n(y)722 2084 y(c)n(hec)n(k)n(er)c(that)j(can)e(b)r(e)h (used)g(to)g(v)n(erify)f(1-safe)g(P)n(etri)g(nets)h([4)o(].)77 b(It)41 b(is)g(written)722 2183 y(b)n(y)28 b(Keijo)f(Heljank)n(o)g(and) g(it)h(is)g(a)n(v)-5 b(ailable)26 b(at)1310 2383 y FB(http://www.tcs.)o (hut)o(.f)o(i/)37 b(kepa/tools/)616 2582 y FD(6.)k Fy(d)t(lsmo)l(dels)c FD(is)28 b(an)f(older)h(v)n(ersion)e(of)i(mcsmo)r(dels)g(whic)n(h)f (only)h(detects)g(deadlo)r(c)n(ks.)722 2682 y(It)g(is)g(a)n(v)-5 b(ailable)26 b(at)i(same)f(place)g(as)g(mcsmo)r(dels.)1905 5255 y(12)p eop %%Page: 13 17 13 16 bop 515 1146 a Fw(Chapter)64 b(2)515 1561 y FE(Installation)515 1993 y FB(Lparse)24 b FD(comes)i(no)n(w)h(with)g(an)g(installation)f (script)h FB(configure)c FD(that)k(should)g(mak)n(e)f(the)515 2092 y(installation)h(easier.)35 b(The)28 b(pro)r(cedure)f(to)g(follo)n (w)g(is:)616 2275 y(1.)41 b FB(cd)25 b FD(to)g(the)h(directory)e(con)n (taining)h FB(lparse)e FD(source)h(co)r(de)h(and)g(t)n(yp)r(e)h FB(./configure)722 2374 y FD(to)i(con\014gure)e(lparse)h(for)g(y)n(our) f(system.)616 2540 y(2.)41 b(T)n(yp)r(e)28 b FB(make)e FD(to)h(compile)h(the)g(binaries.)616 2707 y(3.)41 b(T)n(yp)r(e)28 b FB(make)42 b(install)24 b FD(to)k(install)f(lparse.)616 2873 y(4.)41 b(If)28 b(y)n(ou)f(w)n(an)n(t)g(to)h(remo)n(v)n(e)e(the)i (ob)5 b(ject)27 b(\014les)g(from)h(the)g(source)e(co)r(de)i(directory)e (y)n(ou)722 2972 y(ma)n(y)h(t)n(yp)r(e)h FB(make)42 b(clean)26 b FD(to)h(do)g(it.)639 3155 y(By)h(default,)i FB(lparse)c FD(is)i(installed)g(to)h(the)f(directory)h FB(/usr/local/bin)p FD(.)k(Y)-7 b(ou)29 b(ma)n(y)515 3254 y(c)n(hange)d(the)i(directory)e (b)n(y)i(giving)g FB(configure)c FD(the)k(option)f FB(--prefix=)p Fm(path)9 b FD(.)639 3354 y(There)21 b(is)g(a)f(suite)i(of)27 b Fv(Smodels)21 b FD(programs)d(that)k(can)e(b)r(e)i(used)f(to)g(c)n (hec)n(k)f(that)h FB(lparse)515 3454 y FD(is)34 b(functioning)h (correctly)-7 b(.)56 b(Curren)n(tly)-7 b(,)35 b(it)g(is)f(not)h(y)n(et) f(complete,)i(but)f(I'll)g(expand)f(its)515 3553 y(functionalit)n(y)27 b(in)h(forthcoming)f(lparse)g(releases.)639 3653 y(The)34 b(test)h(programs)c(are)i(stored)g(in)h(directory)g FB(tests)e FD(and)i(the)g(exp)r(ected)h(results)515 3753 y(are)26 b(in)h(directory)f FB(tests/results)p FD(.)32 b(There)26 b(is)h(a)f(p)r(erl)h(script)f FB(test)p 2698 3753 27 4 v 30 w(all)g FD(that)h(p)r(erforms)515 3852 y(all)34 b(tests)h(and)g(rep)r(orts)f(an)n(y)g(errors.)56 b(The)35 b(tests)g(can)f(b)r(e)h(also)f(run)h(with)g FB(make)42 b(check)515 3952 y FD(command.)639 4051 y(As)37 b(a)f(securit)n(y)f (issue,)j(y)n(ou)e(should)g Fy(never)46 b FD(run)36 b FB(lparse)e FD(with)j(setuid)g(bit)g(set.)63 b(It)515 4151 y(is)28 b(p)r(ossible)f(to)h(call)g(user-de\014ned)g (C/C++-functions)e(from)i Fv(Smodels)f FD(programs)f(\(see)515 4251 y(Section)d(5.7.3\))f(and)h(if)h(the)f(setuid)h(bit)g(is)f(on,)h (a)e(malicious)h(adv)n(ersary)d(can)j(run)g(basically)515 4350 y(an)n(ything)k(with)h(the)g(p)r(ermissions)e(of)i(the)g(o)n(wner) e(of)34 b FB(lparse)p FD(.)515 4625 y FA(2.1)135 b(Installation)47 b(on)e(Windo)l(ws)g(systems)515 4807 y FB(Lparse)21 b FD(has)j(b)r(een)h(succesfully)e(compiled)i(on)e(the)i(Microsoft)e (Windo)n(ws)h(95/98)e(systems)515 4906 y(with)31 b(Borland)e(C++)h(v)n (ersion)f(5.5.)45 b(It)31 b(ma)n(y)f(compile)h(also)e(with)i(other)g (compilers)e(and)515 5006 y(other)38 b(Windo)n(ws)g(v)n(ersions)f(but)i (that)g(hasn't)f(b)r(een)h(tested.)70 b(If)39 b(y)n(ou)f(ha)n(v)n(e)f (the)i(GNU)1905 5255 y(13)p eop %%Page: 14 18 14 17 bop 515 523 a FD(programming)23 b(to)r(ols)j(installed)f(on)h (the)g(system,)g(y)n(ou)f(can)g(follo)n(w)g(the)i(directions)e(in)h (the)515 623 y(previous)h(section,)h(otherwise)f(ensure)g(that)h(y)n (our)f(compiler)h(is)g(correctly)e(installed)i(and)515 722 y(con\014gured)e(and)i(issue)f(the)h(follo)n(wing)e(commands)h(to)h (the)g(command)f(prompt:)616 905 y(1.)41 b FB(setup.bat)616 1071 y FD(2.)g FB(cd)i(src)616 1237 y FD(3.)e FB(make)639 1420 y FD(The)28 b(command)g FB(setup.bat)c FD(copies)j(the)h(Windo)n (ws)g(con\014guration)e(\014le)i(to)g(the)g(cor-)515 1519 y(rect)39 b(place)g(and)h(creates)e(the)i(mak)n(e\014le.)72 b(The)40 b(command)f FB(make)f FD(creates)h(the)h(actual)515 1619 y(executable)24 b FB(lparse.exe)d FD(in)k(the)g FB(src)e FD(directory)h(of)g(the)h(distribution)g(and)g(it)g(ma)n(y)f (then)515 1719 y(b)r(e)f(copied)f(to)g(the)h(desired)e(place.)35 b(A)23 b(precompiled)f(Windo)n(ws)g(98)f(binary)h(is)g(a)n(v)-5 b(ailable)21 b(at)515 1818 y(the)28 b FB(lparse)d FD(homepage)h FB(http://www.tcs.hu)o(t.)o(fi/)o(So)o(ftw)o(ar)o(e/s)o(mo)o(de)o(ls/)o (lp)o(ars)o(e)p FD(.)1905 5255 y(14)p eop %%Page: 15 19 15 18 bop 515 1146 a Fw(Chapter)64 b(3)515 1561 y FE(In)-6 b(v)g(oking)75 b(Lparse)515 1993 y FD(The)27 b(command)h(line)f (synopsis)g(of)34 b FB(lparse)25 b FD(is)j(as)f(follo)n(ws:)689 2189 y(Usage:)99 b FB(lparse)e([-1])26 b([-c)42 b Fm(const)13 b FB(=)p Fm(number)e FB(])1388 2288 y([-d)42 b(all)h(|)g(facts)e(|)i (positive)e(|)i(none])1388 2388 y([-D])f([-g)g Fm(file)13 b FB(])43 b([-i])f([-n)g Fm(number)12 b FB(])1388 2488 y([-r)42 b([1)h(|)g(2)g(|)g(3]])g([-t])f([-v])g([-w)g Fm(n)14 b FB(])1388 2587 y([-W)42 b Fm(warning)12 b FB(])43 b([--dlp])e([--atom-file)d Fm(file)13 b FB(])1388 2687 y([--allow-inconsi)o(st)o(ent)o(-a)o(nsw)o(er)o(s])1388 2786 y([--drop-quotes])21 b([--partial])1388 2886 y([--separate-weig)o (ht)o(-de)o(fi)o(nit)o(io)o(ns)o(])1388 2986 y([--true-negation)o(])g ([--version])1388 3085 y Fy(\014le)1494 3097 y Ft(1)1559 3085 y Fy(\014le)1665 3097 y Ft(2)1730 3085 y Fx(:)14 b(:)g(:)639 3281 y FD(The)27 b(meanings)e(of)h(the)h(options)f(will)g (b)r(e)h(detailed)f(in)h(Section)f(3.1.)36 b(Mean)n(while,)26 b(the)515 3380 y(rest)h(of)g(this)h(section)g(sho)n(ws)e(ho)n(w)i FB(lparse)d FD(is)j(most)f(often)h(used)g(in)f(practise.)639 3480 y FB(Lparse)j FD(is)j(used)f(as)g(a)g(fron)n(t)g(end)h(to)f FB(smodels)p FD(.)49 b(The)32 b(usual)g(w)n(a)n(y)g(to)g(do)g(this)h (is)f(to)515 3580 y(pip)r(e)c(the)g(output)g(of)34 b FB(lparse)25 b FD(directly)j(to)f FB(smodels)p FD(:)722 3696 y FB(\045)43 b(lparse)f Fm(input)p 1340 3696 27 4 v 29 w(file)1540 3708 y Ft(1)1619 3696 y Fm(input)p 1844 3696 V 29 w(file)2044 3708 y Ft(2)2124 3696 y FB(|)h(smodels)639 3795 y FD(It)38 b(is)e(also)g(p)r(ossible)h(to)g(output)g(the)g(ground) f(program)f(in)i(plain)g(text,)j(using)d(the)515 3895 y(option)27 b FB(-t)p FD(:)722 4011 y FB(\045)43 b(lparse-t)e Fm(input)p 1427 4011 V 29 w(file)639 4111 y FD(If)34 b(the)g(logic)f(program)e(has)j(some)f(v)-5 b(arying)32 b(in)n(teger)h(parameter,)g(its)h(v)-5 b(alue)33 b(can)h(b)r(e)515 4211 y(en)n(tered)27 b(from)g(command)g(line)h(with)g(the)g(option)g FB(-c)p FD(:)722 4327 y FB(\045)43 b(lparse)f(-c)g Fm(parameter)11 b FB(=)p Fm(value)56 b(input)p 2197 4327 V 29 w(file)639 4426 y FD(By)30 b(default)h(the)g(output)g(\014le)f(format)g(is)g(for)g FB(smodels)e FD(2.x,)i(but)h(it)g(is)f(also)f(p)r(ossible)515 4526 y(to)d(output)h FB(smodels)d FD(1.x)i(format)g(b)n(y)g(using)g (the)h(option)f FB(-1)p FD(.)36 b(Note)26 b(that)h(there)f(are)f(only) 515 4626 y(few)h(\(if)g(an)n(y\))f(reasons)f(to)i(use)f FB(smodels)e FD(v)n(ersion)h(1.x)h(as)g FB(smodels)e FD(2.x)i(can)g(do)h(an)n(ything)515 4725 y(that)i(v)n(ersion)e(1.x)h (can)g(do)g(and)h(it's)g(m)n(uc)n(h)f(b)r(etter)h(doing)f(it.)1905 5255 y(15)p eop %%Page: 16 20 16 19 bop 515 523 a FA(3.1)135 b(Lparse)45 b(Options)515 705 y FD(The)27 b(a)n(v)-5 b(ailable)27 b(options)g(are:)515 888 y FB(-1)722 987 y FD(Use)h FB(smodels)d FD(1.x)i(output)h(format.) 515 1153 y FB(-c)j Fl(c)-5 b(onst)8 b FC(=)p Fl(n)722 1253 y FD(De\014ne)23 b(the)f(iden)n(ti\014er)g Fy(c)l(onst)30 b FD(to)22 b(b)r(e)g(a)g(n)n(umeric)g(constan)n(t)f(with)i(the)f(v)-5 b(alue)22 b Fy(n)6 b FD(.)35 b(This)722 1352 y(de\014nition)28 b(o)n(v)n(errides)d(an)n(y)j FB(const)e FD(statemen)n(ts)h(for)g Fy(n)34 b FD(in)28 b(the)g(program.)515 1518 y FB(-d)j(all)42 b(|)h(facts)f(|)h(positive)d(|)j(none)722 1618 y FD(Con)n(trol)27 b(whic)n(h)g(domain)g(predicates)g(are)g(emitted.)37 b(The)28 b(default)g(is)g FB(facts)p FD(.)822 1784 y Fz(\017)41 b FB(all)p FD(:)e(All)29 b(domain)g(literals)f(are)g (emitted.)42 b(Rules)29 b(with)h(unsatis\014able)e(nega-)905 1884 y(tiv)n(e)f(literals)g(in)h(their)g(b)r(o)r(dies)f(are)g(not)h (remo)n(v)n(ed.)822 2017 y Fz(\017)41 b FB(facts)p FD(:)48 b(All)35 b(domain)f(predicates)g(in)g(the)h(rule)f(b)r(o)r(dies)h(are)e (dropp)r(ed)h(from)905 2116 y(output.)822 2249 y Fz(\017)41 b FB(none)p FD(:)35 b(All)28 b(domain)f(literals)g(are)g(dropp)r(ed.) 822 2382 y Fz(\017)41 b FB(positive)p FD(:)34 b(Negativ)n(e)26 b(domain)h(literals)g(in)h(the)g(rule)f(b)r(o)r(dies)h(are)f(dropp)r (ed.)515 2548 y FB(-D)722 2648 y FD(Debug)38 b FB(lparse)33 b FD(data)j(structures.)61 b(With)37 b(this)f(option)g FB(lparse)d FD(creates)i(really)722 2747 y(small)h(in)n(ternal)g (storage)e(tables)i(so)g(that)g(their)h(b)r(eha)n(vior)e(can)h(b)r(e)g (tested)h(more)722 2847 y(easily)-7 b(.)36 b(Not)28 b(recommended)f (for)g(normal)g(use.)515 3013 y FB(-g)42 b Fm(file)722 3113 y FD(Read)21 b(a)g(previously)f(grounded)h Fy(\014le)27 b FD(to)22 b(memory)e(b)r(efore)h(grounding)f(the)i(program.)722 3212 y(This)k(is)g(useful)g(when)g(y)n(ou)f(don't)h(w)n(an)n(t)f(to)h (ground)f(the)h(full)h(program)c(eac)n(h)j(time.)722 3312 y(See)i(Section)f(7.4)g(for)g(more)g(details.)515 3478 y FB(-i)722 3577 y FD(Disable)h(the)g(in)n(ternal)f(functions.)515 3743 y FB(-n)k Fl(n)722 3843 y FD(Set)41 b(the)g(desired)f(n)n(um)n(b)r (er)g(of)h(mo)r(dels)f(to)h Fy(n)6 b FD(.)76 b(This)40 b(o)n(v)n(errides)e(an)n(y)j FB(compute)p FD(-)722 3943 y(statemen)n(ts)28 b(in)f(the)h(program.)515 4109 y FB(-r)42 b([1|2|3])722 4208 y FD(Enable)34 b(the)i(regular)d(mo)r(del)i (extension)f(\(see)h(Section)g(4.8.2)e(for)h(details\).)59 b(The)722 4308 y(optional)30 b(n)n(umeric)h(parameter)e(is)i(used)g(to) f(con)n(trol)g(what)h(in)n(tegrit)n(y)e(constrain)n(ts)722 4408 y(are)e(emitted.)515 4574 y FB(-t)722 4673 y FD(Prin)n(t)g(output) h(as)f(text.)515 4839 y FB(-v)722 4939 y FD(Prin)n(t)g FB(lparse)e FD(v)n(ersion)h(information)1905 5255 y(16)p eop %%Page: 17 21 17 20 bop 515 523 a FB(-w)31 b Fl(n)722 623 y FD(Set)38 b(the)g(default)f(w)n(eigh)n(t)g(of)g(literals)g(to)g Fy(n)6 b FD(.)66 b(If)38 b(this)f(option)g(is)g(not)h(giv)n(en,)h(the) 722 722 y(default)28 b(w)n(eigh)n(t)f(will)h(b)r(e)g(1.)515 886 y FB(-W)j Fl(warning)722 985 y FD(Con)n(trol)22 b(the)i(w)n (arnings)d(emitted)j(b)n(y)g FB(lparse)p FD(.)33 b(P)n(ossible)22 b(v)-5 b(alues)22 b(are:)34 b FB(all)p FD(,)23 b FB(arity)p FD(,)722 1085 y FB(extended)p FD(,)40 b FB(library)p FD(,)g FB(unsat)p FD(,)h FB(weight)p FD(,)g FB(syntax)p FD(,)f FB(typo)p FD(,)i(and)e FB(error)p FD(.)71 b(F)-7 b(or)39 b(a)722 1184 y(detailed)28 b(explanation,)f(see)g(Section)g (7.3.)515 1348 y FB(--atom-file)39 b Fm(file)722 1447 y FD(Output)21 b(the)f(sym)n(b)r(ol)f(table)g(of)h(the)g(grounded)e (program)g(to)i Fy(\014le)6 b FD(.)34 b(See)20 b(Section)f(7.4.4)722 1547 y(for)27 b(more)g(details.)515 1710 y FB(--allow-inconsis)o(te)o (nt)o(-an)o(sw)o(ers)722 1810 y FD(Enables)h(the)i(classical)d (negation)h(extension)g(and)h(additionally)f(rep)r(orts)g(also)g(in-) 722 1909 y(consisten)n(t)f(answ)n(er)f(sets.)37 b(See)28 b(Section)f(4.7)g(for)g(details.)515 2073 y FB(--dlp)722 2172 y FD(Use)34 b(disjunctiv)n(e)g(logic)f(programming)f(seman)n(tics) h(with)i(c)n(hoice)e(rules.)55 b(F)-7 b(or)33 b(de-)722 2272 y(tails,)28 b(see)f(Section)g(4.8.1.)p 432 2396 4 17 v 432 2430 V 432 2463 V 432 2496 V 432 2529 V 432 2562 V 432 2596 V 432 2629 V 515 2414 a FB(--drop-quotes)722 2514 y FD(Remo)n(v)n(e)35 b(quotation)h(marks)f(from)g(strings)h(when)g (p)r(ossible.)62 b(F)-7 b(or)35 b(example)h(")p Fx(a)p FD(")722 2613 y(b)r(ecomes)28 b Fx(a)f FD(but)h("123")e(do)r(esn't)h(c) n(hange.)515 2788 y FB(--partial)722 2888 y FD(Enables)h(the)i(partial) e(mo)r(del)h(extension.)41 b(This)29 b(switc)n(h)f(is)h(iden)n(tical)g (in)g(b)r(eha)n(vior)722 2988 y(to)f FB(-r)43 b(2)p FD(.)p 432 3112 V 432 3145 V 432 3179 V 432 3212 V 432 3245 V 432 3278 V 432 3311 V 515 3130 a FB(--separate-weigh)o(t-)o(de)o(fin) o(it)o(ion)o(s)722 3229 y FD(Do)29 b(not)f(default)h(the)f(w)n(eigh)n (t)g(of)g(a)g(negativ)n(e)f(literal)h(to)g(the)h(w)n(eigh)n(t)e(of)i(a) e(p)r(ositiv)n(e)722 3329 y(one.)515 3488 y FB(--true-negation)722 3588 y FD(Enables)g(the)h(classical)e(negation)h(extension.)36 b(See)28 b(Section)f(4.7)g(for)g(details.)515 3861 y FA(3.2)135 b(Smo)t(dels)45 b(Options)515 4043 y FD(These)27 b(options)g(are)g(curren)n(t)f(for)h(smo)r(dels)h(v)n(ersion)e(2.25.) 689 4237 y(Usage:)99 b FB(smodels)d([number])41 b([-w])h ([-nolookahead])37 b([-backjump])1431 4336 y([-randomize])i ([-internal])g([-tries)i Fm(number)12 b FB(])1431 4436 y([-conflicts)39 b Fm(number)12 b FB(])44 b([-seed)d Fm(number)12 b FB(])639 4631 y FD(The)30 b(\014rst)f Fy(numb)l(er)38 b FD(determines)30 b(the)g(n)n(um)n(b)r(er)f(of)g (stable)h(mo)r(dels)f(to)h(b)r(e)g(computed.)515 4731 y(A)e(zero)e(indicates)i(all.)515 4907 y FB(-backjump)722 5006 y FD(Allo)n(w)g(bac)n(ktrac)n(k)d(to)i(jump)i(o)n(v)n(er)d(sev)n (eral)g(c)n(hoice)g(p)r(oin)n(ts.)1905 5255 y(17)p eop %%Page: 18 22 18 21 bop 515 523 a FB(-nolookahead)722 623 y FD(Do)28 b(not)f(use)h(lo)r(ok)-5 b(ahead)26 b(at)i(all.)515 789 y FB(-sloppy)p 828 789 27 4 v 28 w(heuristic)722 888 y FD(Use)22 b(reduced)f(lo)r(ok)-5 b(ahead)20 b(heuristics.)35 b(This)21 b(ma)n(y)g(sp)r(eed)h FB(smodels)c FD(if)k(the)g(program)722 988 y(has)27 b(an)h("easy")d(structure.)515 1154 y FB(-randomize)722 1254 y FD(Mak)n(e)i(a)g(randomized)g(but)h(complete)g(searc)n(h.)515 1420 y FB(-internal)722 1519 y FD(Simplify)h(the)f(program)d(and)j (prin)n(t)f(it)h(out)g(in)g(an)f(in)n(ternal)g(form.)515 1685 y FB(-w)722 1785 y FD(Compute)h(only)f(the)h(w)n(ell-founded)g(mo) r(del)f(of)h(the)g(program.)515 1951 y FB(-tries)h Fl(numb)-5 b(er)722 2051 y FD(Do)38 b(a)g(sto)r(c)n(hastic)f(random)g(searc)n(h)g (for)g Fy(numb)l(er)46 b FD(times.)69 b(This)38 b(metho)r(d)g(is)g(not) 722 2150 y(complete.)515 2316 y FB(-conflicts)27 b Fl(numb)-5 b(er)722 2416 y FD(When)28 b(doing)f(a)h(sto)r(c)n(hastic)e(searc)n(h,) h(stop)g(when)h Fy(numb)l(er)36 b FD(con\015icts)27 b(are)f(found.)515 2582 y FB(-seed)j Fl(numb)-5 b(er)722 2682 y FD(Use)28 b Fy(numb)l(er)36 b FD(as)27 b(the)h(seed)f(for)g(random)g(parts)g(of)g (computation.)1905 5255 y(18)p eop %%Page: 19 23 19 22 bop 515 1146 a Fw(Chapter)64 b(4)515 1561 y FE(Theoretical)77 b(Stu\013)515 1993 y FD(This)34 b(c)n(hapter)f(discusses)g(the)h (theoretical)f(foundation)h(of)40 b Fv(Smodels)33 b FD(so)h(it)g (shouldn't)515 2092 y(surprise)21 b(an)n(yb)r(o)r(dy)i(that)g(the)g (material)f(in)h(this)g(c)n(hapter)f(is)h(quite)g(theoretical.)35 b(The)22 b(only)515 2192 y(things)33 b(that)h(are)f(really)g(necessary) f(to)h(kno)n(w)g(while)h(using)h FB(lparse)c FD(are)i(the)h(informal) 515 2291 y(parts)27 b(of)g(Section)h(4.4)e(\(pages)h(25{27\).)639 2391 y(If)k(the)h(presen)n(tation)d(seems)i(to)f(b)r(e)h(to)r(o)g(hea)n (vy)f(on)g(\014rst)h(reading,)f(feel)h(free)g(to)f(skip)515 2491 y(to)d(the)h(start)f(of)h(next)g(c)n(hapter)e(on)i(page)e(38)1930 2461 y Ft(1)1967 2491 y FD(.)515 2765 y FA(4.1)135 b(Basic)45 b(T)-11 b(erminology)515 2946 y FD(An)30 b Fy(atom)37 b FD(is)29 b(of)h(the)g(form)g Fx(p)p FD(\()p Fx(a)1514 2958 y Ft(1)1551 2946 y Fx(;)14 b(:)g(:)g(:)27 b(;)14 b(a)1793 2958 y Fk(n)1838 2946 y FD(\))30 b(where)g Fx(p)f FD(is)h(a)f Fx(n)p FD(-ary)g(predicate)g(sym)n(b)r(ol)g(and)515 3046 y Fx(a)559 3058 y Ft(1)596 3046 y FD(,)g Fx(:)14 b(:)g(:)g FD(,)30 b Fx(a)856 3058 y Fk(n)930 3046 y FD(\()p Fx(n)c Fz(\025)f FD(0\))k(are)f(terms.)41 b(A)29 b Fy(term)36 b FD(ma)n(y)28 b(b)r(e)h(either)g(a)g(v)-5 b(ariable,)29 b(a)f(constan)n(t,)h(or)515 3146 y(a)i(function)h Fx(f)9 b FD(\()p Fx(t)1029 3158 y Ft(1)1066 3146 y Fx(;)14 b(:)g(:)g(:)f(;)h (t)1280 3158 y Fk(m)1343 3146 y FD(\))32 b(where)f Fx(t)1681 3158 y Ft(1)1718 3146 y FD(,)i Fx(:)14 b(:)g(:)g FD(,)32 b Fx(t)1970 3158 y Fk(m)2065 3146 y FD(are)e(terms.)48 b(An)32 b(atom)f(\(or)g(a)g(function\))515 3245 y(with)d(no)f(v)-5 b(ariables)26 b(is)i(called)f(a)g Fy(gr)l(ound)37 b FD(atom)27 b(\(function\).)639 3345 y(A)f Fy(liter)l(al)34 b FD(is)25 b(either)g(an)f(atom)h Fx(a)g FD(or)f(its)h(negation)f(not)h Fx(a)p FD(.)35 b(Literals)24 b(of)h(the)h(form)e(not)h Fx(a)515 3445 y FD(are)h(called)i Fy(not-atoms)34 b FD(or)26 b Fy(ne)l(gative)31 b(liter)l(als)7 b FD(.)639 3544 y(A)28 b Fy(rule)34 b FD(is)28 b(of)f(the)h(form)1668 3723 y Fx(h)23 b Fz( )g Fx(l)1870 3735 y Ft(1)1907 3723 y Fx(;)14 b(:)g(:)g(:)f(;)h(l)2116 3735 y Fk(n)2203 3723 y Fx(:)982 b FD(\(4.1\))639 3902 y(where)23 b(the)g(rule)g Fy(he)l(ad)33 b Fx(h)23 b FD(is)f(an)h(atom)g(and)g(literals)f Fx(l)2286 3914 y Ft(1)2323 3902 y FD(,)i Fx(:)14 b(:)g(:)g FD(,)24 b Fx(l)2553 3914 y Fk(n)2621 3902 y FD(\()p Fx(n)f Fz(\025)f FD(0\))h(form)g(the)g(rule)515 4001 y Fy(b)l(o)l(dy)676 3971 y Ft(2)738 4001 y FD(If)i(the)f(rule)g(b)r(o)r(dy)g(is)g(empt)n(y) g(\()p Fx(n)f FD(=)g(0\),)i(the)f(rule)g(is)g(called)f(a)h Fy(fact)p FD(.)36 b(A)25 b(rule)f(is)f(called)515 4101 y(a)29 b Fy(Horn)j(rule)k FD(if)30 b(it)g(do)r(esn't)g(ha)n(v)n(e)f(an) n(y)g(negativ)n(e)g(literals.)42 b(A)30 b(normal)f Fy(lo)l(gic)k(pr)l (o)l(gr)l(am)k FD(is)515 4201 y(a)27 b(set)h(of)f(rules.)639 4300 y(The)34 b(rules)e(of)h(the)h(form)f(\(4.1\))g(are)f(called)h Fy(b)l(asic)i(rules)7 b FD(.)54 b FB(Lparse)31 b FD(also)h(supp)r(orts) g(a)515 4400 y(n)n(um)n(b)r(er)j(of)h(extended)g(rule)g(t)n(yp)r(es.)61 b(Ho)n(w)n(ev)n(er,)36 b(for)g(a)f(while)h(w)n(e)f(consider)g(only)h (basic)515 4499 y(rules)27 b(and)g(the)h(extensions)f(are)g(presen)n (ted)g(in)h(Section)f(4.6.)639 4599 y(The)d Fy(Herbr)l(and)j(universe)j FD(of)24 b(a)g(logic)f(program)f(is)i(the)g(set)g(of)g(all)f(ground)g (terms)h(that)515 4699 y(can)h(b)r(e)h(constructed)f(using)g(function)h (sym)n(b)r(ols)f(and)g(constan)n(ts)f(in)i(that)g(program.)34 b(The)515 4798 y Fy(Herbr)l(and)g(b)l(ase)k FC(HB)31 b FD(of)h(a)f(logic)g(program)e(is)j(the)g(set)f(of)h(all)f(ground)g (atoms)g(that)g(can)p 515 4850 1146 4 v 607 4904 a Fs(1)642 4927 y Fr(Of)23 b(course,)g(after)h(reading)g(the)h(informal)c(parts.) 607 4983 y Fs(2)642 5006 y Fr(also)i(called)h(the)h(rule)e Fj(tail)p Fr(.)1905 5255 y FD(19)p eop %%Page: 20 24 20 23 bop 515 523 a FD(b)r(e)28 b(constructed)f(using)g(the)h (predicates)f(in)h(the)g(program)e(and)h(terms)h(in)g(the)g(Herbrand) 515 623 y(univ)n(erse.)639 722 y(F)-7 b(or)27 b(example,)g(in)h(a)g (program)515 887 y FC(Program)j(4.1)722 1002 y FB(d\(a\).)85 b(d\(b\).)722 1102 y(foo\(X\))41 b(:-)i(not)f(bar\(X\).)722 1202 y(bar\(X\))f(:-)i(not)f(foo\(X\).)515 1366 y FD(the)27 b(Herbrand)g(univ)n(erse)f(is)i Fz(f)p Fx(a;)14 b(b)p Fz(g)25 b FD(\(these)j(t)n(w)n(o)f(constan)n(ts)f(are)g(the)i(only)f (ground)f(terms)515 1466 y(of)h(the)h(program\),)e(and)i(the)g (Herbrand)e(base)h(is)h Fz(f)p Fx(f)9 b(oo)p FD(\()p Fx(a)p FD(\))p Fx(;)14 b(f)9 b(oo)p FD(\()p Fx(b)p FD(\))p Fx(;)14 b(bar)r FD(\()p Fx(a)p FD(\))p Fx(;)g(bar)r FD(\()p Fx(b)p FD(\))p Fz(g)p FD(.)639 1565 y(An)37 b Fy(instanc)l(e)42 b FD(of)36 b(an)g(atom,)h(a)f(literal,)h(a)f(rule,)i(or)d(a)g(function) i(is)f(constructed)f(b)n(y)515 1665 y(replacing)29 b(all)i(v)-5 b(ariables)29 b(in)i(it)g(b)n(y)f(ground)g(terms.)46 b(The)30 b Fy(Herbr)l(and)j(instantiation)38 b FD(of)30 b(a)515 1765 y(program)25 b(is)h(the)i(set)f(of)f(all)h(ground)f (instances)g(of)h(the)g(rules)g(of)f(the)i(program)d(that)i(ma)n(y)515 1864 y(b)r(e)h(constructed)f(using)g(terms)g(in)h(the)g(Herbrand)f (univ)n(erse)g(of)g(the)h(program.)639 1964 y(F)-7 b(or)27 b(example,)g(the)h(Herbrand)f(instan)n(tiation)g(of)h(the)g(Program)d (4.1)i(is:)515 2128 y FC(Program)k(4.2)722 2244 y FB(d\(a\).)85 b(d\(b\).)722 2343 y(foo\(a\))41 b(:-)i(not)f(bar\(a\).)722 2443 y(foo\(b\))f(:-)i(not)f(bar\(b\).)722 2543 y(bar\(a\))f(:-)i(not)f (foo\(a\).)722 2642 y(bar\(b\))f(:-)i(not)f(foo\(b\).)639 2807 y FD(An)28 b Fy(interpr)l(etation)34 b Fx(I)h FD(of)27 b(a)g(logic)g(program)e(is)j(a)f(subset)g(of)g(its)h(Herbrand)e(base.) 37 b(An)515 2907 y(in)n(terpretation)26 b(assigns)h(a)g Fy(truth)i(valuation)35 b Fz(V)7 b FD(\()p Fx(a)p FD(\))28 b(to)g(eac)n(h)f(elemen)n(t)h(of)f(the)h(base.)37 b(If)28 b(an)515 3006 y(atom)g Fx(a)h FD(is)g(in)h(the)f(in)n(terpretation,)g (its)g(v)-5 b(aluation)28 b Fz(V)7 b FD(\()p Fx(a)p FD(\))26 b(=)f Fu(true)k FD(in)h(the)f(in)n(terpretation,)515 3106 y(otherwise)d Fz(V)7 b FD(\()p Fx(a)p FD(\))24 b(=)e Fu(false)p FD(.)37 b(An)28 b Fy(extension)34 b Fx(E)1944 3118 y Fk(p)2010 3106 y FD(of)28 b(a)f(predicate)g Fx(p)g FD(is)h(the)g(set)870 3287 y Fx(E)931 3299 y Fk(p)993 3287 y FD(=)22 b Fz(f)p Fx(a)h Fz(j)g(V)7 b FD(\()p Fx(a)p FD(\))23 b(=)g Fu(true)28 b FD(and)f(the)h(predicate)f(sym)n(b)r(ol)g (of)h Fx(a)f FD(is)h Fx(p)p Fz(g)41 b Fx(:)184 b FD(\(4.2\))639 3467 y(An)33 b(atom)g Fx(a)f FD(is)h Fy(satis\014e)l(d)42 b FD(b)n(y)32 b(an)h(in)n(terpretation)e(if)i(its)g(v)-5 b(aluation)32 b(is)h Fu(true)p FD(.)52 b(A)33 b(not-)515 3567 y(atom)28 b(not)g Fx(a)g FD(is)g(satis\014ed)57 b(if)29 b(the)f(v)-5 b(aluation)28 b(of)g Fx(a)h FD(is)f Fu(false)p FD(.)39 b(A)28 b(basic)g(rule)g(is)g(satis\014ed)57 b(if)515 3667 y(either)27 b(at)h(least)f(one)g(of)h(its)g(b)r(o)r(dy)g (literals)e(is)i(not)g(satis\014ed)f(b)n(y)g(the)h(in)n(terpretation)f (or)g(if)515 3766 y(its)h(head)f(is)g(satis\014ed.)639 3866 y(If)36 b(an)f(in)n(terpretation)g(satis\014es)g(ev)n(ery)f(rule)h (in)h(the)f(Herbrand)g(instan)n(tiation)g(of)g(a)515 3965 y(program,)25 b(it)j(is)g(a)f Fy(\(Herbr)l(and\))j(mo)l(del)37 b FD(of)28 b(the)g(program.)515 4146 y FC(Example)i(4.1)722 4311 y FD(An)19 b(in)n(terpretation)e Fx(I)31 b FD(=)22 b Fz(f)p Fx(d)p FD(\()p Fx(a)p FD(\))p Fx(;)14 b(d)p FD(\()p Fx(b)p FD(\))p Fx(;)g(f)9 b(oo)p FD(\()p Fx(a)p FD(\))p Fx(;)14 b(bar)r FD(\()p Fx(b)p FD(\))p Fz(g)19 b FD(is)g(a)f(mo)r(del)g(of)h(Program)c(4.1)722 4410 y(b)r(ecause)27 b(all)h(rules)f(of)g(Program)e(4.2)i(are)g (satis\014ed:)722 4543 y(Rules)19 b FB(d\(a\);)41 b(d\(b\);)h(foo\(a\)) f(:-)i(not)f(bar\(a\);)19 b FD(and)f FB(bar\(b\))41 b(:-)i(not)f (foo\(b\))722 4642 y FD(are)33 b(satis\014ed)g(b)r(ecause)g(their)g (heads)g(are)f(in)i(the)g(mo)r(del.)54 b(The)34 b(rule)f FB(foo\(b\))41 b(:-)722 4742 y(not)i(bar\(b\))25 b FD(is)i(satis\014ed) g(b)r(ecause)h FB(not)42 b(bar\(b\))25 b FD(is)j(not)f(satis\014ed.)419 b Fi(\006)639 4907 y FD(A)24 b(mo)r(del)f(is)g Fy(minimal)32 b FD(if)24 b(no)e(prop)r(er)g(subset)h(of)g(it)h(is)e(also)g(a)h(mo)r (del.)35 b(An)24 b(old)f(theorem)515 5006 y(b)n(y)f(M.H.)i(v)-5 b(an)22 b(Emden)h(and)g(R.A.)g(Ko)n(w)n(alski)e([20)o(])i(states)f (that)h(a)g(logic)f(program)f(without)1905 5255 y(20)p eop %%Page: 21 25 21 24 bop 515 523 a FD(negativ)n(e)17 b(literals)h(has)g(a)g(unique)h (minimal)g(Herbrand)f(mo)r(del)h(that)g(is)f(called)h(the)g Fy(me)l(aning)515 623 y FD(of)28 b(the)h(program.)37 b(The)28 b(minimal)h(mo)r(del)f Fx(M)37 b FD(of)29 b(a)f(program)e Fx(P)40 b FD(can)28 b(b)r(e)h(found)f(b)n(y)g(using)515 722 y(the)g(Knaster-T)-7 b(arski)24 b(op)r(erator)i Fx(T)1610 734 y Fk(P)1693 722 y FD(where)1141 899 y Fx(T)1190 911 y Fk(P)1245 899 y FD(\()p Fx(M)9 b FD(\))23 b(=)g Fz(f)p Fx(h)f Fz(j)28 b Fx(h)23 b Fz( )g Fx(l)1875 911 y Ft(1)1912 899 y Fx(;)14 b(:)g(:)g(:)f(;)h(l)2121 911 y Fk(n)2194 899 y FD(is)27 b(a)h(rule)f(in)h(the)1673 1024 y(program)d(and)j Fx(l)2192 1036 y Ft(1)2229 1024 y Fx(;)14 b(:)g(:)g(:)f(;)h(l)2438 1036 y Fk(n)2506 1024 y Fz(2)24 b Fx(M)9 b Fz(g)3208 963 y FD(\(4.3\))515 1203 y(W)-7 b(e)20 b(can)g(construct)g(the)h (minimal)g(mo)r(del)f(b)n(y)g(starting)g(with)h(an)f(empt)n(y)g(set)g (and)h(applying)515 1303 y(the)28 b Fx(T)707 1315 y Fk(P)789 1303 y FD(op)r(erator)e(un)n(til)i(a)f(\014xed)h(p)r(oin)n(t)g(is)f (found.)515 1485 y FC(Example)j(4.2)722 1651 y FD(Supp)r(ose)e(that)g (the)g(Herbrand)f(instan)n(tiation)g(of)g(a)g(program)f(is)905 1801 y FB(a.)86 b(b.)905 1900 y(c)43 b(:-)g(a.)905 2000 y(d)g(:-)g(c,)g(b.)905 2100 y(e)g(:-)g(f.)722 2232 y FD(Then)28 b(the)g(minimal)g(mo)r(del)g(is)f(found)h(in)g(follo)n(wing) e(steps:)799 2398 y(1.)41 b(Initially)-7 b(,)24 b Fx(M)32 b FD(=)23 b Fz(;)p FD(.)35 b(No)n(w)22 b Fx(c)p FD(,)i Fx(d)p FD(,)h(and)e Fx(e)g FD(cannot)g(b)r(e)g(added)g(to)g(the)h(mo)r (del)f(since)905 2498 y(their)28 b(b)r(o)r(dies)h(are)e(not)h(in)h(the) f(partial)g(mo)r(del.)39 b(Ho)n(w)n(ev)n(er,)26 b(since)i(the)h(b)r(o)r (dies)905 2598 y(of)e(\014rst)f(t)n(w)n(o)g(rules)g(are)g(empt)n(y)-7 b(,)27 b(they)g(ma)n(y)e(b)r(e)j(added)e(to)h(it)g(to)f(get)h(a)f (partial)905 2697 y(mo)r(del)i Fx(M)j FD(=)23 b Fz(f)p Fx(a;)14 b(b)p Fz(g)p FD(.)799 2830 y(2.)41 b(No)n(w)28 b(the)g(b)r(o)r(dy)h(of)f(the)h(rule)f(for)f Fx(c)i FD(is)f(in)g(the)h (partial)f(mo)r(del,)g(so)g Fx(c)g FD(is)g(added)905 2930 y(to)f(the)h(partial)f(mo)r(del)h(and)f(the)h(resulting)f(partial) g(mo)r(del)h Fx(M)j FD(=)23 b Fz(f)p Fx(a;)14 b(b;)g(c)p Fz(g)p FD(.)799 3063 y(3.)41 b(Because)30 b(b)r(oth)h Fx(c)g FD(and)g Fx(b)g FD(are)f(in)h(the)g(partial)g(mo)r(del,)h Fx(d)f FD(m)n(ust)g(b)r(e)g(added)g(to)905 3162 y(it)d(also,)f(and)g Fx(M)32 b FD(=)22 b Fz(f)p Fx(a;)14 b(b;)g(c;)g(d)p Fz(g)p FD(.)799 3295 y(4.)41 b(There)30 b(are)g(no)h(more)f(rules)g(with)i (true)f(b)r(o)r(dies)g(that)g(can)g(b)r(e)g(added)g(to)g(the)905 3395 y(mo)r(del,)d(so)f(the)h(meaning)f(of)g(this)h(program)e(is)h Fx(M)32 b FD(=)23 b Fz(f)p Fx(a;)14 b(b;)g(c;)g(d)p Fz(g)p FD(.)3324 3561 y Fi(\006)515 3835 y FA(4.2)135 b(Stable)46 b(Mo)t(del)f(Seman)l(tics)515 4017 y FD(The)38 b(concept)g(of)h (meaning)f(that)g(w)n(as)g(de\014ned)g(ab)r(o)n(v)n(e)f(do)r(esn't)i (generalize)e(nicely)h(to)515 4117 y(logic)29 b(programs)e(with)j (negations)f(and)h(something)f(else)h(is)f(needed.)44 b(The)30 b Fy(stable)i(mo)l(del)515 4216 y(semantics)j FD([2)o(])28 b(for)f(a)g(ground)g(logic)f(program)g Fx(P)39 b FD(is)28 b(de\014ned)g(in)g(the)g(follo)n(wing)e(w)n(a)n(y:)639 4316 y(Let)33 b Fx(M)42 b FD(b)r(e)34 b(an)n(y)e(set)h(of)g(atoms)f (from)h Fx(P)12 b FD(.)53 b(The)33 b Fy(r)l(e)l(duct)41 b Fx(P)2525 4286 y Fk(M)2631 4316 y FD(of)33 b(the)h(program)d(with)515 4416 y(resp)r(ect)c(to)h Fx(M)36 b FD(is)27 b(obtained)h(b)n(y)f (deleting)h(from)f Fx(P)616 4582 y FD(1.)41 b(eac)n(h)30 b(rule)f(that)i(has)e(a)h(negativ)n(e)f(literal)g(not)h Fx(a)h FD(in)f(its)g(b)r(o)r(dy)g(when)h Fx(a)f FD(b)r(elongs)f(to)722 4681 y Fx(M)9 b FD(;)28 b(and)616 4847 y(2.)41 b(all)28 b(negativ)n(e)e(literals)h(in)h(the)g(b)r(o)r(dies)f(of)h(remaining)f (rules.)1905 5255 y(21)p eop %%Page: 22 26 22 25 bop 639 523 a FD(As)34 b Fx(P)833 493 y Fk(M)940 523 y FD(is)g(negation-free,)g(it)g(has)f(a)g(unique)h(minimal)g (Herbrand)f(mo)r(del.)56 b(If)34 b(this)515 623 y(mo)r(del)27 b(coincides)g(with)i Fx(M)9 b FD(,)27 b(then)h Fx(M)36 b FD(is)28 b(a)f Fy(stable)j(mo)l(del)37 b FD(of)28 b(the)g(program)d Fx(P)12 b FD(.)639 722 y(The)32 b(in)n(tuitiv)n(e)g(explanation)g(of)g (the)g(reduct)g(is)g(that)g(if)g(w)n(e)g(b)r(eliev)n(e)g(that)g Fx(M)41 b FD(is)32 b(the)515 822 y(set)f(of)h(all)f(true)g(ground)g (atoms)g(of)g(the)h(program,)f(then)h(an)n(y)e(rule)i(that)f(dep)r (ends)h(on)f(a)515 922 y(literal)c(not)i Fx(b)f FD(when)g Fx(b)g FD(is)g Fu(true)h FD(cannot)f(b)r(e)g(used)h(in)f(deduction)h (and)f(ma)n(y)f(b)r(e)i(discarded.)515 1021 y(Also,)d(ev)n(ery)f (literal)h(not)g Fx(b)g FD(is)g(trivially)f(satis\014ed)h(if)h Fx(b)f FD(is)g Fu(false)g FD(and)g(can)g(b)r(e)g(discarded.)36 b(If)515 1121 y Fx(M)f FD(is)26 b(the)h(set)f(of)h(atoms)f(that)g (follo)n(w)g(logically)f(from)h Fx(P)2322 1091 y Fk(M)2396 1121 y FD(,)g(w)n(e)h(can)f(sa)n(y)f(that)i(our)e(b)r(elief)515 1220 y(w)n(as)h(consisten)n(t)h(and)h(\\rational".)515 1403 y FC(Example)i(4.3)722 1569 y FD(Consider)d(the)h(program)d Fx(P)12 b FD(:)905 1719 y FB(a)43 b(:-)g(not)f(b.)905 1818 y(b)h(:-)g(not)f(a.)722 1951 y FD(The)23 b(program)e(has)h(t)n(w)n (o)h(stable)f(mo)r(dels,)i Fx(M)2127 1963 y Ft(1)2187 1951 y FD(=)e Fz(f)p Fx(a)p Fz(g)g FD(and)h Fx(M)2662 1963 y Ft(2)2722 1951 y FD(=)g Fz(f)p Fx(b)p Fz(g)p FD(.)34 b(W)-7 b(e)23 b(can)f(see)722 2051 y(that)32 b Fx(M)987 2063 y Ft(1)1056 2051 y FD(is)g(a)f(stable)h(mo)r(del)g(b)n(y)g (\014rst)f(taking)g(the)i(reduct)e(to)h(get)g(the)g(program)722 2150 y Fx(P)787 2120 y Fk(M)861 2150 y FD(:)905 2316 y FB(a.)722 2482 y FD(As)27 b(the)g(only)g(remaining)f(rule)g(has)g(an) h(empt)n(y)g(b)r(o)r(dy)-7 b(,)27 b(the)g(minimal)g(mo)r(del)g(of)g (the)722 2582 y(program)21 b(is)i Fz(f)p Fx(a)p Fz(g)f FD(that)h(is)f(the)i(same)e(set)h(that)g(w)n(e)f(started)g(with.)36 b(The)23 b(other)f(stable)722 2682 y(mo)r(del)28 b(comes)f(similarly)-7 b(.)722 2814 y(In)33 b(prop)r(ositional)e(logic)h(this)h(program)e(has) h(also)g(third)h(mo)r(del,)h Fz(f)p Fx(a;)14 b(b)p Fz(g)31 b FD(but)j(this)722 2914 y(mo)r(del)g(is)e(not)h(stable,)i(as)d(its)h (reduct)g(is)g(empt)n(y)g(so)g(the)g(minimal)g(mo)r(del)h(of)f(the)722 3014 y(reduct)28 b(is)f(also)g(empt)n(y)-7 b(,)28 b(not)f Fz(f)p Fx(a;)14 b(b)p Fz(g)p FD(.)3324 3147 y Fi(\006)639 3313 y FD(All)24 b(stable)e(mo)r(dels)h(are)f Fy(justi\014e)l(d)32 b FD(in)23 b(the)g(sense)g(that)g(ev)n(ery)f(atom)g(in)h(a)g(mo)r(del)g (has)f(to)515 3412 y(ha)n(v)n(e)h(some)i Fy(r)l(e)l(ason)31 b FD(to)25 b(b)r(e)g(in)g(there;)g(if)h(an)e(atom)h(is)f(in)h(a)g(mo)r (del,)g(there)g(has)f(to)h(b)r(e)g(a)f(rule)515 3512 y(suc)n(h)30 b(that)i(the)f(atom)g(o)r(ccurs)f(at)h(the)h(head)e(of)h (it)h(and)f(all)g(b)r(o)r(dy)g(literals)f(are)g(satis\014ed.)515 3611 y(The)c(third)g(mo)r(del)g(in)g(the)h(ab)r(o)n(v)n(e)d(example)i (w)n(as)f(not)h(justi\014ed)h(b)r(ecause)e(b)r(oth)i(rules)e(had)515 3711 y(unsatis\014ed)i(b)r(o)r(dies.)639 3811 y(The)e(set)g(of)g (stable)f(mo)r(dels)h(for)f(a)g(non-ground)f(logic)h(program)f(is)i (de\014ned)g(to)g(b)r(e)g(the)515 3910 y(set)i(of)h(stable)f(mo)r(dels) h(of)f(the)h(Herbrand)f(instan)n(tiation)g(of)h(the)g(program.)515 4185 y FA(4.3)135 b(Grounding)515 4367 y FD(A)25 b Fy(gr)l(ounding)32 b FD(transforms)23 b(a)h(normal)g(logic)g(program)e(in)n(to)j(an)f (equiv)-5 b(alen)n(t)24 b(ground)g(logic)515 4466 y(program)16 b(where)i(the)h(equiv)-5 b(alence)18 b(is)g(de\014ned)h(as)f(ha)n(ving) f(the)i(same)f(set)h(of)f(stable)g(mo)r(dels.)515 4566 y(A)29 b(grounding)f(is)g Fy(lo)l(c)l(al)39 b FD(if)30 b(it)f(is)g(p)r(ossible)f(to)h(do)g(the)g(grounding)f(one)g(rule)h(at)g (a)f(time.)42 b(A)515 4666 y Fy(variable)32 b(binding)37 b FD(is)28 b(a)g(substitution)h(that)g(maps)f(a)g(subset)g(of)g(v)-5 b(ariables)27 b(of)h(a)g(rule)g(in)n(to)515 4765 y(ground)e(terms.)639 4865 y(In)41 b(the)g(previous)e(section)h(w)n(e)h(de\014ned)f(the)h (set)g(of)f(stable)g(mo)r(dels)h(of)f(a)g(general)515 4964 y(program)26 b(to)i(b)r(e)g(the)h(set)f(of)g(stable)g(mo)r(dels)g (of)g(its)h(Herbrand)e(instan)n(tiation.)38 b(Wh)n(y)28 b(not)1905 5255 y(22)p eop %%Page: 23 27 23 26 bop 515 523 a FD(use)28 b(it)h(directly?)41 b(The)28 b(answ)n(er)g(is)g(that)h(in)g(practice)f(it)i(is)e(not)h(p)r(ossible)f (to)h(generate)e(all)515 623 y(Herbrand)j(instances)g(of)h(a)g(giv)n (en)f(logic)g(program)f(b)r(ecause)i(the)g(size)g(of)g(the)g(Herbrand) 515 722 y(instan)n(tiation)k(is)h(practically)e(alw)n(a)n(ys)g(exp)r (onen)n(tial)h(with)h(resp)r(ect)g(to)f(the)i(size)e(of)h(the)515 822 y(original)26 b(problem.)639 922 y(Usually)34 b(most)f(of)h(the)g (rules)f(in)h(the)g(Herbrand)f(instan)n(tiation)g(ha)n(v)n(e)g (unsatis\014able)515 1021 y(b)r(o)r(dies)27 b(and)h(they)g(ma)n(y)f(b)r (e)h(discarded)e(without)i(a\013ecting)g(the)g(set)f(of)h(stable)f(mo)r (dels.)639 1121 y(Consider)g(the)h(follo)n(wing)e(program:)515 1287 y FC(Program)31 b(4.3)722 1403 y FB(d\(a\).)85 b(e\(b\).)g (e\(c\).)722 1503 y(foo\(X\))41 b(:-)i(d\(X\),)f(not)g(bar\(X\).)722 1602 y(bar\(X\))f(:-)i(d\(X\),)f(not)g(foo\(X\).)515 1768 y FD(In)22 b(the)g(Herbrand)f(instan)n(tiation)g(of)h(the)g (program,)f(the)h(last)f(t)n(w)n(o)g(rules)h(are)e(b)r(oth)i(instan-) 515 1868 y(tiated)e(for)f(eac)n(h)g(of)g(the)h(three)g(constan)n(ts)e (of)i(the)g(program.)32 b(The)20 b(complete)g(instan)n(tiation)515 1968 y(is:)515 2134 y FC(Program)31 b(4.4)722 2250 y FB(d\(a\).)85 b(e\(b\).)g(e\(c\).)722 2350 y(foo\(a\))41 b(:-)i(d\(a\),)f(not)g(bar\(a\).)722 2449 y(foo\(b\))f(:-)i(d\(b\),)f (not)g(bar\(b\).)722 2549 y(foo\(c\))f(:-)i(d\(c\),)f(not)g(bar\(c\).) 722 2648 y(bar\(a\))f(:-)i(d\(a\),)f(not)g(foo\(a\).)722 2748 y(bar\(b\))f(:-)i(d\(b\),)f(not)g(foo\(b\).)722 2848 y(bar\(c\))f(:-)i(d\(c\),)f(not)g(foo\(c\).)515 3014 y FD(It)34 b(is)g(not)g(p)r(ossible)g(to)g(deduce)g(atoms)f Fx(d)p FD(\()p Fx(b)p FD(\))i(and)f Fx(d)p FD(\()p Fx(c)p FD(\))h(in)f(the)g(Program)e(4.4)h(and)h(an)n(y)515 3113 y(rule)h(that)i(dep)r(ends)f(on)g(either)g(of)g(them)g(cannot)g(ha)n(v) n(e)f(its)h(b)r(o)r(dy)g(true.)62 b(Those)36 b(rules)515 3213 y(can)25 b(b)r(e)g(discarded)g(without)h(a\013ecting)f(stable)g (mo)r(dels.)36 b(In)25 b(e\013ect,)i(the)e(program)f(can)h(b)r(e)515 3313 y(shortened)i(to:)515 3479 y FC(Program)k(4.5)722 3595 y FB(d\(a\).)85 b(e\(b\).)g(e\(c\).)722 3694 y(foo\(a\))41 b(:-)i(d\(a\),)f(not)g(bar\(a\).)722 3794 y(bar\(a\))f(:-)i(d\(a\),)f (not)g(foo\(a\).)639 3960 y FD(The)33 b(crucial)e(question)i(no)n(w)e (is,)j(ho)n(w)e(do)g(w)n(e)g(kno)n(w)g(whic)n(h)g(rules)g(can)g(b)r(e)h (dropp)r(ed)515 4060 y(out?)h FB(Lparse)16 b FD(do)r(es)j(the)g(job)g (b)n(y)g(dividing)g(the)g(predicates)f(in)n(to)h(t)n(w)n(o)f(classes,)i (domain)e(and)515 4159 y(non-domain)32 b(predicates.)51 b(The)33 b(in)n(tuition)g(is)g(suc)n(h)g(that)g(the)g(non-domain)f (predicates)515 4259 y(are)19 b(the)h(ones)g(that)g(w)n(e)g(are)f(in)n (terested)h(in)g(and)g(domain)g(predicates)f(just)h(giv)n(e)g(all)f(p)r (ossible)515 4359 y(v)-5 b(ariable)26 b(bindings.)p 432 4581 4 174 v 639 4466 a(Informally)k(domain)h(predicates)f(are)f(the)j (predicates)e(that)h(are)e(not)i(de\014ned)g(using)515 4565 y(negativ)n(e)26 b(recursion.)639 4665 y(In)h(Program)c(4.3)i (predicates)h Fx(d)g FD(and)g Fx(e)g FD(are)f(domain)h(predicates,)g (while)g Fy(fo)l(o)33 b FD(and)26 b Fx(bar)515 4765 y FD(are)i(not)h(since)h(they)f(dep)r(end)h(recursiv)n(ely)e(on)h(eac)n (h)f(other.)42 b(The)29 b(recursion)f(is)h(negativ)n(e)515 4864 y(since)23 b(there)f(are)g(the)i(t)n(w)n(o)e FB(not)p FD(s)g(in)h(the)g(rules.)35 b(There)22 b(is)h(a)g(longer)f(discussion)g (on)g(domain)515 4964 y(predicates)k(in)i(the)g(next)g(section.)1905 5255 y(23)p eop %%Page: 24 28 24 27 bop 515 523 a FA(4.4)135 b(Domain)46 b(Predicates)515 705 y FD(In)26 b(b)r(eginning)h(of)f(this)h(section)f(the)h(notion)f (of)h Fy(domain)j(pr)l(e)l(dic)l(ates)k FD(is)27 b(in)n(tro)r(duced)f (quite)515 805 y(informally)i(and)h(the)g(formal)f(de\014nitions)h(are) f(in)h(Section)g(4.4.4.)40 b(There)28 b(are)g(also)g(some)515 904 y(tips)g(on)f(ho)n(w)g(to)g(construct)g(domains)g(using)h (relational)e(algebra)g(in)i(Section)f(4.4.3.)515 1137 y Fh(4.4.1)112 b(What's)38 b(New?)p 432 1679 4 456 v 515 1280 a FC(NOTE)21 b(THA)-8 b(T)22 b(THE)f(DEFINITION)g(OF)g(DOMAIN) g(PREDICA)-8 b(TES)21 b(HAS)515 1380 y(CHANGED)j(IN)h(LP)-8 b(ARSE-1.0.3.)38 b(I)25 b(HA)-11 b(VEN'T)25 b(HAD)g(TIME)g(TO)g(DOCU-) 515 1480 y(MENT)32 b(THE)h(NEW)f(F)m(ORMAL)g(DEFINITION)h(BUT)h(IT)f (WILL)h(COME)515 1579 y(SOON.)27 b(MEANWHILE,)h(HERE)g(IS)h(A)g(BRIEF)g (AND)g(HIGHL)-8 b(Y)29 b(INF)m(OR-)515 1679 y(MAL)21 b(DESCRIPTION)g(ABOUT)h(THE)f(NEW)g(DOMAIN)g(PREDICA)-8 b(TES.)639 1778 y FD(In)38 b FB(lparse)e FD(the)i(grounding)f(is)h (done)f(using)h(domain)g(predicates.)67 b(Previously)-7 b(,)38 b(a)515 1878 y(predicate)32 b(w)n(as)f(a)h(domain)g(predicate)g (exactly)f(when)i(it)g(didn't)g(ha)n(v)n(e)e(recursion)g(in)i(its)515 1978 y(de\014nition.)k(No)n(w)27 b(a)g(domain)g(predicate)g(can)h(b)r (e)g(de\014ned)g(via)f(p)r(ositiv)n(e)g(recursion.)639 2077 y(The)39 b(main)f(idea)g(is)g(that)h(a)f(hierarc)n(h)n(y)e(is)i (created)f(from)h(the)h(predicate)f(sym)n(b)r(ols)515 2177 y(where)25 b(a)h(predicate)g Fx(P)38 b FD(is)26 b(on)g(higher)f(lev)n(el)h(than)g(the)h(predicate)e Fx(Q)h FD(if)h Fx(P)38 b FD(dep)r(ends)26 b(on)g Fx(Q)p FD(.)515 2277 y(The)i(actual)f(de\014nition)i(is)e(a)h(little)h(quirkier)e (since)g(w)n(e)h(w)n(an)n(t)f(that)h(t)n(w)n(o)g(predicates)f(that)515 2376 y(dep)r(end)36 b(p)r(ositiv)n(ely)f(on)g(eac)n(h)f(other)h(ma)n(y) f(b)r(e)i(in)g(the)f(same)g(lev)n(el.)60 b(If)35 b(t)n(w)n(o)g (predicates)515 2476 y(dep)r(end)e(negativ)n(ely)f(on)g(eac)n(h)g (other,)h(they)g(will)g(b)r(e)g(assigned)f(to)g(the)h(highest)g(lev)n (el)f(of)515 2575 y(the)c(hierarc)n(h)n(y)-7 b(,)25 b(as)i(w)n(ell)h (as)f(all)g(predicates)g(that)h(dep)r(end)g(on)f(them.)639 2675 y(A)41 b(predicate)e(that)i(is)f(not)g(on)f(the)i(highest)f(la)n (y)n(er)e(\(called)i Fx(!)s FD(-la)n(y)n(er)e(is)i(a)f(domain)515 2775 y(predicate\).)g(The)29 b(extended)g(domain)f(restriction)g (condition)g(states)g(that)h(all)f(v)-5 b(ariables)515 2874 y(that)28 b(o)r(ccur)f(in)h(a)f(rule)h(ha)n(v)n(e)e(to)i(o)r(ccur) f(in)h(some)f(p)r(ositiv)n(e)g(literal)g(that)h(is)g(on)f(lo)n(w)n(er)g (lev)n(el)515 2974 y(than)g(the)h(rule)g(head.)639 3074 y(F)-7 b(or)27 b(example,)g(consider)g(the)h(program:)515 3240 y FC(Program)j(4.6)722 3356 y FB(number\(0..n\).)722 3456 y(odd\(X+1\))41 b(:-)h(number\(X\),)e(even\(X\).)722 3555 y(even\(X+1\))g(:-)j(number\(X\),)c(odd\(X\).)722 3655 y(even\(0\).)722 3754 y(two)p 859 3754 27 4 v 30 w(divides\(X\))h(:-)j(odd\(X\).)722 3854 y(interesting\(X\))38 b(:-)43 b(number\(X\),)c(not)k(dull\(X\).)722 3954 y(dull\(X\))e(:-)i (number\(X\),)c(not)k(interesting\(X\).)722 4053 y(interesting)p 1211 4053 V 27 w(odd\(X\))e(:-)i(odd\(X\),)e(interesting\(X\).)639 4219 y FD(In)26 b(this)f(program)e(all)i(predicates)f(except)i Fx(dul)r(l)r FD(,)e Fx(inter)r(esting)s FD(,)g(and)h Fx(inter)r(esting)p 3229 4219 25 4 v 31 w(odd)515 4319 y FD(are)35 b(domain)h(predicates.)62 b(The)36 b(predicates)f Fx(dul)r(l)i FD(and)f Fx(inter)r(esting)i FD(dep)r(end)f(on)f(eac)n(h) 515 4419 y(other)25 b(negativ)n(ely)f(and)h Fx(inter)r(esting)p 1703 4419 V 32 w(odd)h FD(dep)r(ends)g(on)f Fx(inter)r(esting)s FD(.)35 b(The)26 b(dep)r(endency)515 4518 y(graph)e(of)i(the)h(program) c(is)j(sho)n(wn)f(in)h(Figure)g(4.1)f(and)g(its)i(strati\014cation)d (in)j(Figure)e(4.2.)639 4618 y(The)j(predicate)f(hierarc)n(h)n(y)e(is)j (constructed)f(using)g(the)h(follo)n(wing)f(rules:)616 4784 y(1.)41 b(If)28 b Fx(P)40 b FD(dep)r(ends)28 b(on)f Fx(Q)g FD(and)h Fx(Q)f FD(do)r(esn't)h(dep)r(end)g(on)g Fx(P)12 b FD(,)27 b(then)h Fx(P)35 b(>)23 b(Q)p FD(;)616 4950 y(2.)41 b(If)24 b Fx(P)35 b FD(dep)r(ends)24 b(p)r(ositiv)n(ely)e (on)h Fx(Q)g FD(and)g Fx(Q)g FD(dep)r(ends)h(p)r(ositiv)n(ely)e(on)h Fx(P)12 b FD(,)24 b(then)g Fx(P)35 b FD(=)22 b Fx(Q)p FD(;)1905 5255 y(24)p eop %%Page: 25 29 25 28 bop 1130 1273 a @beginspecial -25 @llx -6 @lly 171 @urx 94 @ury 1960 @rwi @setspecial %%BeginDocument: new_dependency.4 %!PS %%BoundingBox: -25 -6 171 94 %%Creator: MetaPost %%CreationDate: 2001.02.22:1339 %%Pages: 1 %*Font: cmr10 9.96265 9.96265 61:da9f7e %%EndProlog %%Page: 1 1 -24.65205 -2.49065 moveto (t) cmr10 9.96265 fshow -21.05446 -2.49065 moveto (w) cmr10 9.96265 fshow -14.13596 -2.49065 moveto (o) cmr10 9.96265 fshow 0 0.3985 dtransform truncate idtransform setlinewidth pop [] 0 setdash 0 setlinecap 1 setlinejoin 10 setmiterlimit newpath -8.55685 -2.29144 moveto -5.56805 -2.29144 lineto stroke -5.56805 -2.49065 moveto (divides) cmr10 9.96265 fshow -8.16385 40.02904 moveto (o) cmr10 9.96265 fshow -2.90575 40.02904 moveto (dd) cmr10 9.96265 fshow -9.6859 82.54872 moveto (ev) cmr10 9.96265 fshow -0.2767 82.54872 moveto (en) cmr10 9.96265 fshow 52.20961 -2.49065 moveto (in) cmr10 9.96265 fshow 60.2351 -2.49065 moveto (teresting) cmr10 9.96265 fshow newpath 98.5525 -2.29144 moveto 101.54141 -2.29144 lineto stroke 101.54141 -2.49065 moveto (o) cmr10 9.96265 fshow 106.79941 -2.49065 moveto (dd) cmr10 9.96265 fshow 62.16676 40.02904 moveto (in) cmr10 9.96265 fshow 70.19226 40.02904 moveto (teresting) cmr10 9.96265 fshow 26.03978 61.28888 moveto (n) cmr10 9.96265 fshow 31.29788 61.28888 moveto (um) cmr10 9.96265 fshow 44.85818 61.28888 moveto (b) cmr10 9.96265 fshow 50.66968 61.28888 moveto (er) cmr10 9.96265 fshow 76.7371 82.54872 moveto (dull) cmr10 9.96265 fshow 0 0.5 dtransform truncate idtransform setlinewidth pop 1 setlinecap newpath -6.21333 7.2775 moveto -21.0761 27.77686 -21.40445 55.54126 -7.19836 76.36162 curveto stroke newpath -7.88524 72.42155 moveto -7.7012 73.73601 -7.4725 75.05002 -7.19836 76.36162 curveto -8.31967 75.62805 -9.41052 74.86064 -10.47014 74.06133 curveto closepath gsave fill grestore stroke newpath 2.91647 49.79706 moveto 5.57634 58.43929 5.71222 67.65997 3.32414 76.3613 curveto stroke newpath 5.64331 73.10205 moveto 4.91801 74.218 4.1445 75.30553 3.32414 76.3613 curveto 3.15765 75.03468 2.9356 73.71873 2.65933 72.41678 curveto closepath gsave fill grestore stroke newpath -3.32414 76.36124 moveto -5.71222 67.65991 -5.57632 58.43924 -2.91646 49.79701 curveto stroke newpath -5.33444 52.98326 moveto -4.57552 51.89055 -3.76907 50.82736 -2.91646 49.79701 curveto -2.79074 51.12848 -2.6092 52.45049 -2.37314 53.75978 curveto closepath gsave fill grestore stroke newpath 9.18027 47.10982 moveto 25.16367 55.10152 lineto stroke newpath 22.5428 52.07959 moveto 25.16367 55.10152 lineto 21.1736 54.818 lineto closepath gsave fill grestore stroke newpath 10.85477 79.61198 moveto 27.96518 71.05678 lineto stroke newpath 23.97533 71.34027 moveto 27.96518 71.05678 lineto 25.34444 74.07855 lineto closepath gsave fill grestore stroke newpath 70.48477 7.2773 moveto 9.1805 37.92941 lineto stroke newpath 13.17076 37.64589 moveto 9.1805 37.92941 lineto 11.8015 34.90733 lineto closepath gsave fill grestore stroke 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth newpath 85.03937 7.27744 moveto 85.03937 33.842 lineto stroke 0 0.5 dtransform truncate idtransform setlinewidth pop newpath 86.5701 30.14656 moveto 85.03937 33.842 lineto 83.50864 30.14656 lineto closepath gsave fill grestore stroke newpath 70.48473 49.797 moveto 59.8757 55.10152 lineto stroke newpath 63.86565 54.81801 moveto 59.8757 55.10152 lineto 62.4965 52.0797 lineto closepath gsave fill grestore stroke [3 2 ] 1.5 setdash newpath 81.71523 76.36124 moveto 79.32715 67.65991 79.46304 58.43924 82.12291 49.79701 curveto stroke [] 0 setdash newpath 79.70493 52.98326 moveto 80.46385 51.89055 81.2703 50.82736 82.12291 49.79701 curveto 82.24863 51.12848 82.43016 52.45049 82.66623 53.75978 curveto closepath gsave fill grestore stroke [3 2 ] 1.5 setdash newpath 87.95584 49.79706 moveto 90.6157 58.43929 90.75159 67.65997 88.36351 76.3613 curveto stroke [] 0 setdash newpath 90.68268 73.10205 moveto 89.95738 74.218 89.18387 75.30553 88.36351 76.3613 curveto 88.19702 75.03468 87.97496 73.71873 87.6987 72.41678 curveto closepath gsave fill grestore stroke newpath 73.76727 79.40332 moveto 57.07419 71.05678 lineto stroke newpath 59.69499 74.07866 moveto 57.07419 71.05678 lineto 61.06416 71.34032 lineto closepath gsave fill grestore stroke 130.55905 82.68117 moveto (p) cmr10 9.96265 fshow 136.37065 82.68117 moveto (ositiv) cmr10 9.96265 fshow 159.67215 82.68117 moveto (e) cmr10 9.96265 fshow 130.55905 69.92513 moveto (negativ) cmr10 9.96265 fshow 162.10745 69.92513 moveto (e) cmr10 9.96265 fshow newpath 127.55905 85.03937 moveto 114.80301 85.03937 lineto stroke newpath 118.49858 86.57016 moveto 114.80301 85.03937 lineto 118.49858 83.50858 lineto closepath gsave fill grestore stroke [3 2 ] 1.5 setdash newpath 127.55905 72.28333 moveto 114.80301 72.28333 lineto stroke [] 0 setdash newpath 118.49858 73.81412 moveto 114.80301 72.28333 lineto 118.49858 70.75253 lineto closepath gsave fill grestore stroke newpath 110.55144 93.54317 moveto 170.07874 93.54317 lineto 170.07874 63.77953 lineto 110.55144 63.77953 lineto closepath stroke showpage %%EOF %%EndDocument @endspecial 922 1456 a FD(Figure)27 b(4.1:)36 b(The)28 b(dep)r(endency)g(graph)e(of)i(the)g(program)d(\(4.6\).)1230 2752 y @beginspecial -86 @llx -6 @lly 86 @urx 126 @ury 1720 @rwi @setspecial %%BeginDocument: new_dependency.5 %!PS %%BoundingBox: -86 -6 86 126 %%Creator: MetaPost %%CreationDate: 2001.02.22:1339 %%Pages: 1 %*Font: cmmi10 9.96265 9.96265 21:8 %*Font: cmr10 9.96265 9.96265 30:e000000000002d4f3f %%EndProlog %%Page: 1 1 -16.4799 116.5646 moveto (n) cmr10 9.96265 fshow -11.2218 116.5646 moveto (um) cmr10 9.96265 fshow 2.3385 116.5646 moveto (b) cmr10 9.96265 fshow 8.15 116.5646 moveto (er) cmr10 9.96265 fshow -52.20558 86.80095 moveto (ev) cmr10 9.96265 fshow -42.79639 86.80095 moveto (en) cmr10 9.96265 fshow 34.35583 86.80095 moveto (o) cmr10 9.96265 fshow 39.61394 86.80095 moveto (dd) cmr10 9.96265 fshow -24.65205 57.03665 moveto (t) cmr10 9.96265 fshow -21.05446 57.03665 moveto (w) cmr10 9.96265 fshow -14.13596 57.03665 moveto (o) cmr10 9.96265 fshow 0 0.3985 dtransform truncate idtransform setlinewidth pop [] 0 setdash 0 setlinecap 1 setlinejoin 10 setmiterlimit newpath -8.55685 57.23586 moveto -5.56805 57.23586 lineto stroke -5.56805 57.03665 moveto (divides) cmr10 9.96265 fshow -65.39229 27.273 moveto (in) cmr10 9.96265 fshow -57.36679 27.273 moveto (teresting) cmr10 9.96265 fshow 34.21742 27.273 moveto (dull) cmr10 9.96265 fshow -32.82976 -2.49065 moveto (in) cmr10 9.96265 fshow -24.80426 -2.49065 moveto (teresting) cmr10 9.96265 fshow newpath 13.51314 -2.29144 moveto 16.50204 -2.29144 lineto stroke 16.50204 -2.49065 moveto (o) cmr10 9.96265 fshow 21.76004 -2.49065 moveto (dd) cmr10 9.96265 fshow 0 0.5 dtransform truncate idtransform setlinewidth pop 1 setlinecap newpath -10.39598 66.8046 moveto -31.66528 81.69336 lineto stroke newpath -27.75998 80.82813 moveto -31.66528 81.69336 lineto -29.51569 78.32004 lineto closepath gsave fill grestore stroke newpath -31.6656 92.40985 moveto -10.95583 97.42848 10.6541 97.45206 31.37233 92.48056 curveto stroke newpath 27.4312 91.7956 moveto 28.74036 92.04326 30.05421 92.27162 31.37233 92.48056 curveto 30.29256 93.26488 29.20206 94.03246 28.10121 94.78308 curveto closepath gsave fill grestore stroke newpath 31.37195 86.10252 moveto 10.65378 81.13112 -10.95605 81.15474 -31.66574 86.17336 curveto stroke newpath -27.72357 86.8494 moveto -29.03311 86.6047 -30.3473 86.37932 -31.66574 86.17336 curveto -30.58784 85.3867 -29.4992 84.61679 -28.4002 83.8638 curveto closepath gsave fill grestore stroke newpath 32.12373 96.56871 moveto 12.39725 110.3772 lineto stroke newpath 16.30263 109.512 moveto 12.39725 110.3772 lineto 14.54692 107.00385 lineto closepath gsave fill grestore stroke newpath -32.12373 96.56871 moveto -12.39725 110.3772 lineto stroke newpath -14.54692 107.00385 moveto -12.39725 110.3772 lineto -16.30263 109.512 lineto closepath gsave fill grestore stroke newpath 36.3143 0.01399 moveto 85.15533 12.43161 85.26366 77.89758 51.69965 87.98586 curveto stroke newpath 55.69832 88.1128 moveto 54.3824 88.16267 53.04845 88.12218 51.69965 87.98586 curveto 52.74977 87.1285 53.72163 86.21385 54.61684 85.24808 curveto closepath gsave fill grestore stroke newpath -10.39595 7.27711 moveto -30.12244 21.0856 lineto stroke newpath -26.21706 20.2204 moveto -30.12244 21.0856 lineto -27.97276 17.71225 lineto closepath gsave fill grestore stroke newpath -39.05441 37.04076 moveto -4.13219 110.37761 lineto stroke newpath -4.33893 106.38333 moveto -4.13219 110.37761 lineto -7.10281 107.69946 lineto closepath gsave fill grestore stroke [3 2 ] 1.5 setdash newpath -17.1597 35.5643 moveto -1.04015 37.63829 15.36455 36.7777 31.24747 32.98251 curveto stroke [] 0 setdash newpath 27.30693 32.29376 moveto 28.61589 32.54268 29.92953 32.77232 31.24747 32.98251 curveto 30.16693 33.76582 29.07567 34.53233 27.9741 35.28192 curveto closepath gsave fill grestore stroke [3 2 ] 1.5 setdash newpath 31.24725 26.54471 moveto 15.36458 22.74962 -1.03984 21.88902 -17.15915 23.9629 curveto stroke [] 0 setdash newpath -13.31458 25.0669 moveto -14.59004 24.68001 -15.8717 24.31197 -17.15915 23.9629 curveto -16.00198 23.29933 -14.83546 22.6533 -13.66003 22.02496 curveto closepath gsave fill grestore stroke newpath 39.05441 37.04076 moveto 4.13219 110.37761 lineto stroke newpath 7.10281 107.69946 moveto 4.13219 110.37761 lineto 4.33893 106.38333 lineto closepath gsave fill grestore stroke [3 2 ] 1.5 setdash newpath -85.03937 104.1731 moveto 85.03937 104.1731 lineto stroke newpath -85.03937 74.40945 moveto 85.03937 74.40945 lineto stroke newpath -85.03937 44.6458 moveto 85.03937 44.6458 lineto stroke -82.03937 113.29396 moveto (0) cmr10 9.96265 fshow -82.03937 83.52966 moveto (1) cmr10 9.96265 fshow -82.03937 53.76602 moveto (2) cmr10 9.96265 fshow -82.03937 25.06781 moveto (!) cmmi10 9.96265 fshow showpage %%EOF %%EndDocument @endspecial 1014 2934 a(Figure)i(4.2:)37 b(The)27 b(predicate)g (hierarc)n(h)n(y)f(of)h(Program)e(4.6)616 3267 y(3.)41 b(If)36 b Fx(P)46 b FD(and)35 b Fx(Q)f FD(dep)r(end)i(on)e(eac)n(h)g (other)h(and)f(there)h(is)g(a)f(negativ)n(e)g(edge)g(in)h(their)722 3367 y(dep)r(endency)28 b(cycle,)g(then)g Fx(P)35 b FD(=)22 b Fx(Q)h FD(=)g Fx(!)s FD(.)639 3517 y(A)28 b(more)f(formal)g (de\014nition)h(will)g(come)f(in)h(this)g(man)n(ual)e(prett)n(y)i(so)r (on.)515 3746 y Fh(4.4.2)112 b(Informal)37 b(Domains)515 3899 y FB(Lparse)17 b FD(divides)i(the)h(predicate)f(sym)n(b)r(ols)g (of)h(a)f(logic)g(program)e(in)n(to)j(t)n(w)n(o)f(classes,)g(domain)515 3999 y(and)24 b(non-domain)f(predicates.)35 b(The)25 b(domain)f(predicates)f(are)h(used)g(to)g(\014nd)h(all)f(p)r(ossible) 515 4099 y(v)-5 b(ariable)26 b(bindings)i(of)f(rules)g(during)h(the)g (grounding.)639 4198 y(F)-7 b(or)27 b(example,)g(in)h(the)g(program)515 4349 y FC(Program)j(4.7)722 4457 y FB(d\(a,b\).)85 b(d\(b,c\).)f (d\(c,a\).)722 4557 y(foo\(X,Y,Z\))40 b(:-)i(d\(X,Y\),)f(d\(Y,Z\),)g (not)h(bar\(X,Y,Z\).)722 4656 y(bar\(X,Y,Z\))e(:-)i(d\(X,Y\),)f (d\(Y,Z\),)g(not)h(foo\(X,Y,Z\).)515 4807 y FD(the)30 b(predicate)g Fx(d=)p FD(2)f(is)h(the)h(only)e(domain)h(predicate.)44 b(When)31 b(grounding)e(the)h(rules)g(for)515 4907 y Fy(fo)l(o)41 b FD(and)35 b Fx(bar)r FD(,)i FB(lparse)c FD(gets)h(the)i(p)r(ossible)e(v)-5 b(ariable)34 b(bindings)h(from)g (literals)f Fx(d)p FD(\()p Fx(X)r(;)14 b(Y)19 b FD(\))515 5006 y(and)27 b Fx(d)p FD(\()p Fx(Y)5 b(;)14 b(Z)6 b FD(\).)1905 5255 y(25)p eop %%Page: 26 30 26 29 bop 639 523 a FD(In)31 b(this)g(program)d(there)i(are)f(three)i (p)r(ossible)f(v)-5 b(ariable)29 b(bindings)h(for)g(the)h(t)n(w)n(o)f (non-)515 623 y(ground)c(rules:)616 780 y(1.)41 b Fz(f)p Fx(X=a;)14 b(Y)9 b(=b;)14 b(Z)q(=c)p Fz(g)p FD(,)25 b(from)i Fx(d)p FD(\()p Fx(a;)14 b(b)p FD(\))28 b(and)f Fx(d)p FD(\()p Fx(b;)14 b(c)p FD(\).)616 942 y(2.)41 b Fz(f)p Fx(X=b;)14 b(Y)9 b(=c;)14 b(Z)q(=a)p Fz(g)p FD(,)25 b(from)i Fx(d)p FD(\()p Fx(b;)14 b(c)p FD(\))28 b(and)f Fx(d)p FD(\()p Fx(c;)14 b(a)p FD(\).)616 1104 y(3.)41 b Fz(f)p Fx(X=c;)14 b(Y)9 b(=a;)14 b(Z)q(=b)p Fz(g)p FD(,)25 b(from)i Fx(d)p FD(\()p Fx(c;)14 b(a)p FD(\))28 b(and)f Fx(d)p FD(\()p Fx(a;)14 b(b)p FD(\).)515 1262 y(Th)n(us,)27 b(the)h(resulting)f(ground)g(program)e(will)j(b)r(e:)515 1420 y FC(Program)j(4.8)722 1532 y FB(d\(a,b\).)85 b(d\(b,c\).)f (d\(c,a\).)722 1631 y(foo\(a,b,c\))40 b(:-)i(d\(a,b\),)f(d\(b,c\),)g (not)h(bar\(a,b,c\).)722 1731 y(foo\(b,c,a\))e(:-)i(d\(b,c\),)f (d\(c,a\),)g(not)h(bar\(b,c,a\).)722 1831 y(foo\(b,c,a\))e(:-)i (d\(b,c\),)f(d\(c,a\),)g(not)h(bar\(c,a,b\).)722 1930 y(bar\(a,b,c\))e(:-)i(d\(a,b\),)f(d\(b,c\),)g(not)h(foo\(a,b,c\).)722 2030 y(bar\(b,c,a\))e(:-)i(d\(b,c\),)f(d\(c,a\),)g(not)h(foo\(b,c,a\).) 722 2130 y(bar\(b,c,a\))e(:-)i(d\(b,c\),)f(d\(c,a\),)g(not)h (foo\(c,a,b\).)515 2287 y FD(In)24 b(practice,)g(the)g(non-domain)f (predicates)g(are)g(the)i(\\in)n(teresting")d(predicates,)i(and)g(the) 515 2387 y(domain)g(predicates)f(are)g(just)i(programmer's)d(w)n(a)n(y) h(to)h(tell)h(precisely)e(what)h(instances)g(of)515 2487 y(the)k(\\in)n(teresting")e(predicates)g(w)n(e)i(w)n(an)n(t)f(to)g (consider.)639 2586 y(After)33 b(the)g(grounding)f(is)g(done)h(it)g(is) f(often)h(p)r(ossible)g(to)f(drop)g(all)h(domain)f(literals)515 2686 y(from)f(the)i(program.)48 b(After)32 b(all,)h(w)n(e)f(already)f (kno)n(w)g(that)h(they)g(will)h(b)r(e)f(true)g(in)g(ev)n(ery)515 2785 y(stable)37 b(mo)r(del)g(of)h(the)f(program.)65 b FB(Lparse)35 b FD(command-line)h(argumen)n(t)h FB(-d)42 b(none)36 b FD(\(see)515 2885 y(Section)27 b(3.1\))g(drops)g(all)g (domain)h(literals)e(from)i(the)g(program.)639 2985 y(W)-7 b(e)34 b(can)e(use)h(as)g(a)g(domain)f(predicate)h(\(nearly\))g(an)n(y) f(predicate)g(that)i(has)e(a)h(\014xed)515 3084 y(extension)k(in)i(all) f(stable)f(mo)r(dels)h(of)g(the)h(program.)66 b(That)38 b(is,)j(if)d(w)n(e)g(kno)n(w)f(all)h(true)515 3184 y(ground)23 b(instances)i(of)f(the)h(predicate)f(ev)n(en)g(b)r(efore)h(w)n(e)f(ask) g(smo)r(dels)g(to)h(compute)f(them,)515 3284 y(the)k(predicate)f(is)g (a)g(domain)h(predicate.)639 3383 y(F)-7 b(or)27 b(example,)g(in)h(the) g(program:)515 3541 y FC(Program)j(4.9)722 3653 y FB(p\(X,Y\))41 b(:-)i(d1\(X,Y\),)d(not)j(q\(X,Y\).)722 3753 y(q\(X,Y\))e(:-)i (d1\(X,Y\),)d(not)j(p\(X,Y\).)722 3852 y(d1\(X,Y\))e(:-)i(d2\(X\),)e (d3\(Y\),)g(not)h(d4\(X\).)722 3952 y(d2\(a\).)85 b(d2\(b\).)g (d3\(c\).)f(d4\(a\).)515 4110 y FD(predicates)25 b Fx(d)949 4122 y Ft(1)986 4110 y FD(,)i Fx(d)1079 4122 y Ft(2)1117 4110 y FD(,)f Fx(d)1209 4122 y Ft(3)1247 4110 y FD(,)g(and)g Fx(d)1499 4122 y Ft(4)1563 4110 y FD(are)f(domain)h(predicates.)35 b(All)27 b(rules)f(with)g Fx(d)2981 4122 y Ft(2)3019 4110 y FD(,)g Fx(d)3111 4122 y Ft(3)3149 4110 y FD(,)g(or)g Fx(d)3342 4122 y Ft(4)515 4209 y FD(as)f(heads)g(are)g(facts)h(so)g (the)g(extensions)f(of)h(those)g(predicates)f(are)g(giv)n(en)g (directly)g(in)i(the)515 4309 y(program)e(\()p Fz(f)p Fx(d)964 4321 y Ft(2)1002 4309 y FD(\()p Fx(a)p FD(\))p Fx(;)14 b(d)1190 4321 y Ft(2)1227 4309 y FD(\()p Fx(b)p FD(\))p Fz(g)28 b FD(for)f Fx(d)1567 4321 y Ft(2)1632 4309 y FD(and)g Fz(f)p Fx(d)1878 4321 y Ft(3)1915 4309 y FD(\()p Fx(c)p FD(\))p Fz(g)h FD(and)f Fz(f)p Fx(d)2331 4321 y Ft(4)2368 4309 y FD(\()p Fx(a)p FD(\))p Fz(g)h FD(for)f Fx(d)2716 4321 y Ft(3)2781 4309 y FD(and)h Fx(d)2986 4321 y Ft(4)3023 4309 y FD(\).)639 4408 y(As)37 b(the)g(only)g(rule)f (for)g Fx(d)1469 4420 y Ft(1)1544 4408 y FD(has)g(only)g(domain)h (literals)f(in)h(its)g(b)r(o)r(dy)-7 b(,)39 b(w)n(e)e(also)e(can)515 4508 y(compute)28 b(its)g(extension)g(with)h(relational)e(algebra)f(b)n (y)i(taking)g(a)f(natural)h(join)g(o)n(v)n(er)f(the)515 4608 y(extensions)19 b(of)h Fx(d)1037 4620 y Ft(2)1075 4608 y FD(,)h Fx(d)1162 4620 y Ft(3)1200 4608 y FD(,)h(and)e Fx(d)1442 4620 y Ft(4)1479 4608 y FD(.)35 b(The)20 b(resulting)f (extension)h(is)g(simply)g Fz(f)p Fx(d)2813 4620 y Ft(1)2850 4608 y FD(\()p Fx(b;)14 b(c)p FD(\))p Fz(g)20 b FD(\()p Fx(d)3160 4620 y Ft(1)3198 4608 y FD(\()p Fx(a;)14 b(c)p FD(\))515 4707 y(is)21 b(not)g(in)g(the)g(extension)g(b)r(ecause)f Fx(d)1663 4719 y Ft(4)1701 4707 y FD(\()p Fx(a)p FD(\))h(is)g(alw)n(a)n (ys)e(true)i(and)g(th)n(us)g(the)g(v)-5 b(ariable)20 b(binding)515 4807 y(do)r(esn't)27 b(satisfy)h(the)g(literal)f(not)g Fx(d)1636 4819 y Ft(4)1674 4807 y FD(\()p Fx(X)7 b FD(\).)639 4907 y(The)33 b(extensions)e(of)h(predicates)g Fx(p)g FD(and)g Fx(q)j FD(can't)d(b)r(e)h(computed)f(b)r(eforehand,)h(since) 515 5006 y(they)23 b(dep)r(end)h(on)f(eac)n(h)g(other)g(recursiv)n(ely) -7 b(.)33 b(The)24 b(program)d(has)i(one)g(c)n(hoice)f(p)r(oin)n(t)i (where)1905 5255 y(26)p eop %%Page: 27 31 27 30 bop 515 523 a FD(either)29 b Fx(p)p FD(\()p Fx(b;)14 b(c)p FD(\))30 b(is)g(added)g(to)f(the)i(mo)r(del)f(or)f Fx(q)s FD(\()p Fx(b;)14 b(c)p FD(\))30 b(is)f(added)h(to)g(mo)r(del,)g (but)h(not)f(b)r(oth.)515 623 y(Th)n(us)h(the)h(extension)e(of)i Fx(p)f FD(will)g(b)r(e)h(either)f Fz(f)p Fx(p)p FD(\()p Fx(b;)14 b(c)p FD(\))p Fz(g)31 b FD(or)f(it)i(will)f(b)r(e)h(empt)n(y) -7 b(,)33 b(dep)r(ending)515 722 y(on)27 b(whic)n(h)h(atom)f(got)g (included)h(in)g(the)g(mo)r(del.)37 b(Similarily)27 b(for)g Fx(q)s FD(.)639 822 y Fy(Her)l(e)f(should)h(b)l(e)f(an)g(example)g (that)g(details)h(the)f(tr)l(ansitive)g(closur)l(e)h(in)f(domain)h(pr)l (e)l(d-)515 922 y(ic)l(ates.)639 1021 y FD(There)39 b(is)g(one)f(more)g (complication)h(ab)r(out)f(domain)h(predicates:)59 b(If)39 b(a)g(predicate)515 1121 y(o)r(ccurs)28 b(as)g(a)h(head)g(in)g(an)g (extended)g(rule)g(\(see)g(Section)g(5.4\))f(it)i(ma)n(y)e(not)h(b)r(e) h(a)e(domain)515 1220 y(predicate.)41 b(The)30 b(reason)d(wh)n(y)i(c)n (hoice)g(rules)g(are)f(excluded)i(is)f(clear)f(as)h(they)g(implicitly) 515 1320 y(add)21 b(a)g(c)n(hoice)g(p)r(oin)n(t)h(to)f(the)h(program.) 33 b(The)21 b(reason)f(wh)n(y)h(other)g(rules)g(are)g(also)f(excluded) 515 1420 y(is)37 b(implemen)n(tation)h(sp)r(eci\014c,)j(as)c(extended)h (rules)f(are)g(pro)r(cessed)g(after)g(the)h(domain)515 1519 y(generation.)c(This)23 b(will)g(probably)f(c)n(hange)g(in)h(a)g (future)g(release,)g(but)g(for)g(the)g(time)h(b)r(eing)515 1619 y(y)n(ou)31 b(cannot)g(use)h(a)f(predicate)g(as)g(a)h(domain)f (predicate)g(if)h(it)h(o)r(ccurs)d(as)h(a)h(head)f(in)h(an)515 1719 y(extended)c(rule.)515 1950 y Fh(4.4.3)112 b(Constructing)36 b(Domains)515 2103 y FD(All)25 b(basic)g(relational)f(algebra)g(op)r (erations)f(can)i(b)r(e)h(done)f(on)g(the)h(extensions)e(of)h(domain) 515 2203 y(predicates)h(and)i(the)g(result)f(will)h(still)g(b)r(e)g(a)f (domain)g(predicate.)37 b(The)27 b(op)r(erations)f(are:)616 2381 y(1.)41 b(Union)28 b Fx(P)i Fz([)19 b Fx(R)28 b FD(of)g(the)g(extensions)f(of)g Fx(P)40 b FD(and)27 b Fx(R)q FD(:)905 2528 y FB(U\(X\))42 b(:-)h(P\(X\).)905 2627 y(U\(X\))f(:-)h(R\(X\).)616 2791 y FD(2.)e(In)n(tersection)27 b Fx(P)j Fz(\\)19 b Fx(R)28 b FD(of)g(the)g(extensions:)905 2938 y FB(I\(X\))42 b(:-)h(P\(X\),)e(R\(X\).)616 3102 y FD(3.)g(Set)28 b(di\013erence)g Fx(P)i Fz(n)18 b Fx(R)28 b FD(of)g(the)g(extensions:)905 3249 y FB(D\(X\))42 b(:-)h(P\(X\),)e (not)h(R\(X\).)616 3413 y FD(4.)f(Cartesian)27 b(pro)r(duct)g Fx(P)j Fz(\002)18 b Fx(R)q FD(:)905 3560 y FB(C\(X,Y\))41 b(:-)i(P\(X\),)e(R\(Y\).)616 3724 y FD(5.)g(Natural)27 b(join)h Fx(P)35 b(.)-14 b(/)22 b(R)q FD(:)905 3871 y FB(J\(X,Y,Z\))40 b(:-)j(P\(X,Y\),)e(R\(Y,Z\).)616 4035 y FD(6.)g(Symmetric)28 b(di\013erence)f Fx(P)35 b Fi(M)23 b Fx(R)q FD(:)905 4181 y FB(S\(X\))42 b(:-)h(P\(X\),)e(not)h(R\(X\).) 905 4281 y(S\(X\))g(:-)h(R\(X\),)e(not)h(P\(X\).)515 4591 y Fh(4.4.4)112 b(F)-9 b(ormal)37 b(Domains)515 4744 y FD(The)31 b Fy(dep)l(endency)k(gr)l(aph)k Fx(G)1431 4756 y Fk(P)1516 4744 y FD(=)29 b(\()p Fx(V)1690 4756 y Fk(P)1746 4744 y Fx(;)14 b(E)1844 4756 y Fk(P)1900 4744 y FD(\))32 b(of)f(a)g(logic)g(program)e Fx(P)43 b FD(is)32 b(constructed)f(as)515 4844 y(follo)n(ws:)616 5006 y(1.)41 b Fx(V)770 5018 y Fk(P)849 5006 y FD(=)23 b Fz(f)p Fx(p)f Fz(j)h Fx(p)28 b FD(is)f(a)g(predicate)g(sym)n(b)r(ol)g (in)h Fx(P)12 b Fz(g)p FD(.)1905 5255 y(27)p eop %%Page: 28 32 28 31 bop 1507 941 a tx@Dict begin tx@NodeDict begin {6.94444 0.0 20.5556 10.2778 3.47221 } false /N@m 16 {InitRnode } NewNode end end 1507 941 a FD(male)2421 941 y tx@Dict begin tx@NodeDict begin {6.94444 0.0 28.05562 14.0278 3.47221 } false /N@f 16 {InitRnode } NewNode end end 2421 941 a FD(female)1948 930 y tx@Dict begin tx@NodeDict begin {6.15079 1.94444 28.08339 14.04169 2.10316 } false /N@fa 16 {InitRnode } NewNode end end 1948 930 a FD(paren)n(t)1532 694 y tx@Dict begin tx@NodeDict begin {4.30554 0.0 14.50003 7.25002 2.15277 } false /N@s 16 {InitRnode } NewNode end end 1532 694 a FD(son)2377 697 y tx@Dict begin tx@NodeDict begin {6.94444 1.94444 38.63898 19.31949 2.5 } false /N@d 16 {InitRnode } NewNode end end 2377 697 a FD(daugh)n(ter)1915 702 y tx@Dict begin tx@NodeDict begin {6.15079 0.0 36.1945 18.09724 3.0754 } false /N@a 16 {InitRnode } NewNode end end 1915 702 a FD(ancestor)1593 912 y @beginspecial @setspecial tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow EndArrow } def [ 51.2146 34.1432 28.45274 62.59595 85.35825 62.59595 62.59639 34.1432 false OpenBezier gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end @endspecial 1593 912 a tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@a /N@fa InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end 1593 912 a 1593 912 a tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@s /N@m InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end 1593 912 a 1593 912 a tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@s /N@fa InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end 1593 912 a 1593 912 a tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@d /N@f InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end 1593 912 a 1593 912 a tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@d /N@fa InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end 1593 912 a 901 1095 a FD(Figure)27 b(4.3:)36 b(The)27 b(dep)r(endency)h(graph)f(of)g(family)h(relationships)616 1357 y(2.)41 b(\()p Fx(a;)14 b(b)p FD(\))23 b Fz(2)h Fx(E)1066 1369 y Fk(P)1149 1357 y FD(if)k(and)f(only)g(if)h(there)f (exists)g(a)g(rule)g(in)h Fx(P)39 b FD(where)27 b Fx(a)h FD(is)f(the)h(predicate)722 1457 y(sym)n(b)r(ol)f(in)h(the)g(head)g (and)f Fx(b)g FD(is)h(a)f(predicate)g(sym)n(b)r(ol)g(in)h(the)g(rule)f (b)r(o)r(dy)-7 b(.)639 1619 y(A)36 b(predicate)g Fx(a)f Fy(dep)l(ends)44 b FD(on)36 b(a)f(predicate)g Fx(b)h FD(if)g(and)g(only)f(if)h(there)g(exists)g(a)f(path)515 1719 y(from)29 b Fx(a)h FD(to)g Fx(b)g FD(in)g(the)g(dep)r(endency)h (graph.)43 b(A)30 b(predicate)f Fx(p)h FD(of)g(a)g(logic)f(program)f Fx(P)42 b FD(is)29 b(a)515 1819 y Fy(domain)h(pr)l(e)l(dic)l(ate)k FD(if)26 b(and)h(only)f(if)h(it)f(holds)g(that)h(ev)n(ery)e(path)i (starting)e(from)h(no)r(de)h Fx(p)f FD(in)515 1918 y(the)i(dep)r (endency)g(graph)e(is)i(cycle)f(free.)515 2097 y FC(Example)j(4.4)722 2259 y FD(Consider)d(the)h(follo)n(wing)e(program:)722 2454 y FC(Program)31 b(4.10)905 2571 y FB(ancestor\(X,Y\))38 b(:-)43 b(ancestor\(X,Z\),)38 b(parent\(Z,Y\).)905 2670 y(ancestor\(X,Y\))g(:-)43 b(parent\(X,Y\).)905 2770 y(son\(X,Y\))d(:-)j (parent\(Y,X\),)c(male\(X\).)905 2869 y(daughter\(X,Y\))f(:-)43 b(parent\(Y,X\),)c(female\(X\).)722 3034 y FD(The)24 b(dep)r(endency)f(graph)g(of)g(this)h(program)d(is)i(sho)n(wn)g(in)g (Figure)g(4.3.)35 b(W)-7 b(e)23 b(can)g(see)722 3133 y(from)28 b(the)h(graph)e(that)i Fx(ancestor)i FD(dep)r(ends)d(on)h (itself)f(and)h(on)f Fx(par)r(ent)p FD(.)39 b(Lik)n(ewise,)722 3233 y Fx(daug)s(hter)25 b FD(dep)r(ends)f(on)f Fx(par)r(ent)g FD(and)g Fy(female)p FD(.)37 b(Here)23 b(all)g(predicates)f(but)i Fx(ancestor)722 3333 y FD(are)j(domain)g(predicates.)1779 b Fi(\006)515 3607 y FA(4.5)135 b(Domain-Restricted)47 b(Programs)515 3788 y FD(A)33 b(rule)f(is)h Fy(domain-r)l(estricte)l(d) 42 b FD(if)33 b(it)g(holds)g(that)g(if)g(a)f(v)-5 b(ariable)32 b(app)r(ears)f(in)i(the)g(rule)g(it)515 3888 y(also)26 b(app)r(ears)h(in)h(a)f(p)r(ositiv)n(e)g(domain)g(literal)g(in)h(the)g (b)r(o)r(dy)-7 b(.)639 3988 y(A)30 b(logic)e(program)g(is)h Fy(domain-r)l(estricte)l(d)j(pr)l(o)l(gr)l(am)37 b FD(if)29 b(and)g(only)g(if)h(ev)n(ery)e(rule)h(in)h(it)515 4087 y(is)d(domain-restricted.)515 4266 y FC(Example)j(4.5)722 4428 y FD(Supp)r(ose)e(that)g Fx(d)g FD(is)f(a)g(domain)h(predicate)f (and)g(there)g(are)g(t)n(w)n(o)g(rules:)905 4575 y FB(p\(X,Y\))41 b(:-)i(d\(X,Y\),)d(not)j(q\(X,Y\).)905 4675 y(q\(X,Y\))e(:-)i(not)f (d\(X,Y\),)f(not)h(q\(X,Y\).)722 4807 y FD(No)n(w)31 b(the)g(\014rst)g(rule)g(is)f(domain-restricted)g(since)h(b)r(oth)g Fx(X)38 b FD(and)30 b Fx(Y)50 b FD(o)r(ccur)30 b(in)i(the)722 4907 y(domain)j(literal)f Fx(d)p FD(\()p Fx(X)r(;)14 b(Y)k FD(\).)59 b(The)35 b(second)f(rule)g(is)h(not)f (domain-restricted,)h(since)722 5006 y(the)28 b(domain)f(literal)h(is)f (negativ)n(e,)g(and)g(not)h(p)r(ositiv)n(e.)877 b Fi(\006)1905 5255 y FD(28)p eop %%Page: 29 33 29 32 bop 639 523 a FD(The)30 b(reason)d(for)i(ha)n(ving)f(domain)h (restriction)f(is)h(that)h(during)e(grounding)g(w)n(e)h(ha)n(v)n(e)515 623 y(to)e(kno)n(w)g(exactly)g(what)h(ground)e(instances)h(of)h(rules)f (are)f(needed.)639 722 y(F)-7 b(or)27 b(example,)g(if)i(w)n(e)e(tried)g (to)h(use)f(rules)g(of)h(the)g(follo)n(wing)e(form:)722 829 y FB(a\(X\))42 b(:-)h(not)f(b\(X,Y\).)639 928 y FD(w)n(e)25 b(w)n(ould)h(ha)n(v)n(e)e(to)h(generate)g(a)g(ground)f(instance)i(for)f (eac)n(h)g(imaginable)f(binding)i(of)515 1028 y Fx(Y)18 b FD(.)35 b(In)22 b(e\013ect,)h(w)n(e)e(w)n(ould)g(ha)n(v)n(e)g(to)g (use)g(ev)n(ery)g(single)f(constan)n(t)h(that)h(app)r(ears)e(somewhere) 515 1128 y(in)j(the)g(program)d(as)i(a)g(p)r(ossible)h(binding)g(for)f Fx(Y)41 b FD(and)22 b(there)h(ma)n(y)f(b)r(e)h(thousands)f(of)g(them.) 515 1227 y(So)27 b(the)h(domain)f(predicates)g(are)g(used)g(to)h (\\restrict)e(the)i(domain")f(of)g(v)-5 b(ariables.)515 1385 y FC(Example)30 b(4.6)722 1531 y FD(The)21 b(Program)e(4.10)g(is)i (otherwise)f(domain-restricted)g(but)i(the)f(v)-5 b(ariable)20 b Fx(X)27 b FD(in)22 b(the)722 1631 y(\014rst)j(rule)f(do)r(esn't)h(o)r (ccur)f(in)g(a)h(domain)f(predicate.)35 b(W)-7 b(e)25 b(can)f(\014x)h(the)g(situation)f(b)n(y)722 1731 y(de\014ning)k(a)f (new)h(predicate,)f Fx(per)r(son)p FD(,)h(and)f(rules)905 1865 y FB(ancestor\(X,Y\))38 b(:-)43 b(ancestor\(X,Z\),)38 b(parent\(Z,Y\),)g(person\(X\).)905 1965 y(person\(X\))i(:-)j (female\(X\).)905 2064 y(person\(X\))d(:-)j(male\(X\).)3324 2192 y Fi(\006)639 2339 y FD(The)28 b(earlier)e FB(smodels)f FD(fron)n(t-end,)i Fy(p)l(arse)p FD(,)h(allo)n(w)n(ed)f(rules)g(of)g (the)h(form:)722 2445 y FB(p\(X,Y\))41 b(:-)i(q\(X,Y\),)e(not)h (r\(X,Y\).)639 2545 y FD(where)29 b Fx(q)j FD(w)n(as)c(an)n(y)g (predicate)h(sym)n(b)r(ol.)40 b Fy(Parse)c FD(computed)30 b(the)f(needed)g(ground)f(in-)515 2644 y(stances)21 b(b)n(y)h(dropping) g(all)g(negativ)n(e)f(literals)h(and)g(then)h(computing)f(a)g(deductiv) n(e)g(closure)515 2744 y(of)28 b(the)g(rules.)37 b(This)28 b(metho)r(d)g(had)g(the)g(w)n(eakness)e(that)j(the)f(whole)f(program)f (had)i(to)g(b)r(e)515 2843 y(k)n(ept)j(in)h(memory)f(during)g (grounding,)h(whic)n(h)f(sev)n(erely)g(a\013ected)g(the)h(p)r (erformance)f(of)515 2943 y(the)d(system.)515 3213 y FA(4.6)135 b(W)-11 b(eigh)l(t)46 b(Constrain)l(ts)515 3395 y FD(The)26 b Fv(Smodels)f FD(v)n(ersions)f(2.0)h(and)g(later)h (ha)n(v)n(e)e(three)i(extended)g(rule)f(t)n(yp)r(es)h(in)g(addition)515 3495 y(to)32 b(basic)g(rules)g(that)g(w)n(ere)g(de\014ned)h(in)f (Section)h(4.2:)45 b(c)n(hoice,)33 b(constrain)n(t,)g(and)f(w)n(eigh)n (t)515 3594 y(rules.)51 b(The)32 b(formal)g(seman)n(tics)f(of)i(all)f (three)g(can)g(b)r(e)h(de\014ned)g(through)e(use)i(of)f Fy(weight)515 3694 y(c)l(onstr)l(aints)66 b FD(and)30 b Fy(weight)j(c)l(onstr)l(aint)f(rules)7 b FD(.)44 b(In)31 b FB(lparse)c FD(the)k(w)n(eigh)n(t)e(constrain)n(ts)g(are)515 3794 y(implemen)n(ted)f(as)f(sp)r(ecial)g(literal)g(t)n(yp)r(es.)639 3893 y(Basically)-7 b(,)27 b(a)g(w)n(eigh)n(t)g(constrain)n(t)f(is)i (something)f(of)g(the)h(form)603 4051 y Fx(L)23 b Fz(\024)f(f)p Fx(a)856 4063 y Ft(1)916 4051 y FD(=)h Fx(w)1063 4063 y Ft(1)1100 4051 y Fx(;)14 b(:)g(:)g(:)g(;)g(a)1329 4063 y Fk(n)1397 4051 y FD(=)23 b Fx(w)1544 4063 y Fk(n)1589 4051 y Fx(;)14 b FD(not)28 b Fx(b)1810 4063 y Ft(1)1870 4051 y FD(=)22 b Fx(w)2016 4063 y Fk(n)p Ft(+1)2146 4051 y Fx(;)14 b(:)g(:)g(:)g(;)g FD(not)27 b Fx(b)2514 4063 y Fk(m)2600 4051 y FD(=)22 b Fx(w)2746 4063 y Fk(m)p Ft(+)p Fk(n)2902 4051 y Fz(g)h(\024)f Fx(U)97 b FD(\(4.4\))515 4209 y(where)21 b Fx(a)793 4221 y Ft(1)830 4209 y Fx(;)14 b(:)g(:)g(:)g(;)g(a)1059 4221 y Fk(n)1104 4209 y Fx(;)g(b)1177 4221 y Ft(1)1213 4209 y Fx(;)g(:)g(:)g(:)g(;)g(b)1434 4221 y Fk(m)1518 4209 y FD(are)21 b(atoms,)h Fx(L)g FD(and)f Fx(U)31 b FD(are)21 b(the)h(in)n(tegral)e Fy(lower)32 b FD(and)22 b Fy(upp)l(er)515 4309 y FD(b)r(ounds,)27 b(and)h Fx(w)1047 4321 y Ft(1)1084 4309 y FD(,)g Fx(:)14 b(:)g(:)f FD(,)28 b Fx(w)1355 4321 y Fk(m)p Ft(+)p Fk(n)1538 4309 y FD(are)e Fy(weights)36 b FD(of)27 b(the)h(literals.)36 b(Later)26 b(on,)h(w)n(e)g(denote)h(the)515 4408 y(w)n(eigh)n(t)33 b(of)g(a)h(literal)f Fx(l)i FD(with)f Fx(w)r FD(\()p Fx(l)r FD(\).)56 b(Here)33 b(w)n(e)h(consider)e(only)i(p)r(ositiv)n(e)f (w)n(eigh)n(ts)g(as)g(the)515 4508 y(negativ)n(e)23 b(w)n(eigh)n(ts)g (can)h(b)r(e)g(remo)n(v)n(ed)f(from)g(a)h(program)e(as)h(b)n(y)h (negating)f(the)i(w)n(eigh)n(t)e(and)515 4608 y(in)n(v)n(erting)j(the)i (literal.)639 4707 y(The)d(in)n(tuitional)g(seman)n(tics)e(of)i(a)f(w)n (eigh)n(t)g(constrain)n(t)g(is)g(that)h(it)g(is)g(satis\014ed)f (exactly)515 4807 y(when)29 b(the)g(sum)f(of)h(w)n(eigh)n(ts)f(of)g (satis\014ed)g(literals)g Fx(l)2160 4819 y Ft(1)2197 4807 y FD(,)h Fx(:)14 b(:)g(:)g FD(,)29 b Fx(l)2437 4819 y Fk(n)2511 4807 y FD(is)f(b)r(et)n(w)n(een)h Fx(L)f FD(and)g Fx(U)9 b FD(,)29 b(in-)515 4907 y(clusiv)n(e.)35 b(The)24 b(stable)f(mo)r(del)h(seman)n(tics)f(for)g(w)n(eigh)n(t)g (constrain)n(t)g(rules)g(w)n(as)g(\014rst)h(de\014ned)515 5006 y(in)k([12)o(].)1905 5255 y(29)p eop %%Page: 30 34 30 33 bop 515 523 a FC(Example)30 b(4.7)722 689 y FD(Let)e Fx(M)k FD(=)22 b Fz(f)p Fx(a;)14 b(b)p Fz(g)26 b FD(and)1283 871 y Fx(C)1342 883 y Ft(1)1402 871 y FD(=)d(2)g Fz(\024)f(f)p Fx(a)h FD(=)f(1)p Fx(;)14 b FD(not)27 b Fx(b)c FD(=)g(1)p Fx(;)14 b FD(not)27 b Fx(c)c FD(=)f(1)p Fz(g)g(\024)h FD(3)1283 971 y Fx(C)1342 983 y Ft(2)1402 971 y FD(=)g(1)g Fz(\024)f(f)p Fx(a)h FD(=)f(1)p Fx(;)14 b(b)22 b FD(=)h(1)p Fx(;)14 b(c)22 b FD(=)h(1)p Fz(g)f(\024)h FD(1)722 1149 y(No)n(w)36 b Fx(M)44 b FD(satis\014es)35 b Fx(C)1418 1161 y Ft(1)1491 1149 y FD(b)r(ecause)h(literals)f Fx(a)g FD(and)h(not)g Fx(c)f FD(are)g(satis\014ed)h(and)f(their)722 1249 y(total)h(w)n(eigh)n(t)e(is)i(greater)e(than)h(the)h(lo)n(w)n(er)e (b)r(ound)i(and)f(lo)n(w)n(er)f(than)i(the)g(upp)r(er)722 1349 y(b)r(ound.)41 b(Ho)n(w)n(ev)n(er,)27 b Fx(C)1432 1361 y Ft(2)1498 1349 y FD(is)i(not)g(satis\014ed)f(as)g(the)h(sum)g (of)g(the)g(w)n(eigh)n(ts)e(of)i Fx(a)g FD(and)f Fx(b)722 1448 y FD(is)g(greater)e(than)h(the)h(upp)r(er)g(b)r(ound.)1411 b Fi(\006)639 1614 y FD(A)28 b Fy(weight)j(c)l(onstr)l(aint)e(rule)34 b FD(is)27 b(of)h(the)g(form)1660 1797 y Fx(C)1719 1809 y Ft(0)1779 1797 y Fz( )23 b Fx(C)1944 1809 y Ft(1)1982 1797 y Fx(;)14 b(:)g(:)g(:)g(C)2189 1809 y Fk(n)3208 1797 y FD(\(4.5\))515 1980 y(where)30 b Fx(C)817 1992 y Ft(0)855 1980 y FD(,)i Fx(:)14 b(:)g(:)g FD(,)32 b Fx(C)1135 1992 y Fk(n)1212 1980 y FD(are)e(w)n(eigh)n(t)g(constrain)n (ts.)46 b(W)-7 b(e)32 b(also)e(ha)n(v)n(e)g(to)h(restrict)f Fx(C)3052 1992 y Ft(0)3121 1980 y FD(so)h(that)515 2079 y(ma)n(y)c(not)g(ha)n(v)n(e)g(an)n(y)f(negativ)n(e)h(literals)g(in)h (it.)639 2179 y(A)k(w)n(eigh)n(t)e(constrain)n(t)g(rule)h(is)g (satis\014ed)f(if)i Fx(C)2111 2191 y Ft(0)2179 2179 y FD(is)f(satis\014ed)g(whenev)n(er)f Fx(C)3016 2191 y Ft(1)3054 2179 y FD(,)i Fx(:)14 b(:)g(:)f FD(,)32 b Fx(C)3333 2191 y Fk(n)515 2278 y FD(are)27 b(satis\014ed..)40 b(Analogously)26 b(to)j(the)g(de\014nition)g(of)f(normal)g(logic)f(programs,)g(a)h Fy(weight)515 2378 y(c)l(onstr)l(aint)h(pr)l(o)l(gr)l(am)35 b FD(is)27 b(a)g(set)h(of)f(w)n(eigh)n(t)g(rules.)639 2478 y(A)36 b Fy(r)l(e)l(duct)43 b Fx(C)1063 2448 y Fk(M)1172 2478 y FD(of)36 b(a)f(w)n(eigh)n(t)f(constrain)n(t)h Fx(C)41 b FD(with)36 b(resp)r(ect)g(to)f(a)g(set)g Fx(M)44 b FD(of)36 b(atoms)515 2577 y(is)28 b(obtained)h(b)n(y)f(remo)n(ving)f (the)i(upp)r(er)g(b)r(ound)g(and)g(all)f(negativ)n(e)g(literals)f(from) i(it,)g(and)515 2677 y(subtracting)e(the)h(w)n(eigh)n(ts)e(of)i (satis\014ed)f(not-atoms)f(from)i(the)g(lo)n(w)n(er)e(b)r(ound:)1385 2860 y Fx(C)1450 2825 y Fk(M)1547 2860 y FD(=)c Fx(L)1691 2825 y Fg(0)1737 2860 y Fz(\024)h(f)p Fx(a)1911 2872 y Fk(i)1961 2860 y FD(=)g Fx(w)2108 2872 y Fk(i)2159 2860 y Fz(j)g Fx(a)2249 2872 y Fk(i)2299 2860 y Fz(2)h Fx(M)9 b Fz(g)698 b FD(\(4.6\))515 3042 y(where)1586 3225 y Fx(L)1643 3191 y Fg(0)1689 3225 y FD(=)23 b Fx(L)18 b Fz(\000)1959 3146 y Ff(X)1935 3328 y Fk(b)1964 3336 y Fe(i)1997 3328 y Fk(=)-41 b Fg(2)p Fk(M)2118 3225 y Fx(w)r FD(\()p Fx(b)2247 3237 y Fk(i)2275 3225 y FD(\))901 b(\(4.7\))639 3506 y(The)28 b(reduct)g(of)g(a)f(w)n(eigh)n(t)h(rule)f Fx(R)1727 3476 y Fk(M)1828 3506 y FD(of)h(a)g(w)n(eigh)n(t)f(rule)h Fx(R)g FD(with)h(resp)r(ect)e(to)h(a)f(set)h Fx(M)515 3605 y FD(of)f(atoms)g(is)h(the)g(set)f(of)h(rules)699 3879 y Fx(R)763 3845 y Fk(M)859 3879 y FD(=)947 3709 y Ff(8)947 3784 y(<)947 3933 y(:)1021 3780 y Fz(;)1264 b Fx(;)14 b FD(if)28 b Fz(9)p Fx(C)2545 3792 y Fk(i)p Fg(\025)p Ft(1)2681 3780 y FD(:)23 b Fx(M)32 b Fd(2)23 b Fx(C)2973 3792 y Fk(i)1021 3890 y Fz(f)p Fx(h)f Fz( )28 b Fx(C)1309 3856 y Fk(M)1303 3911 y Ft(1)1383 3890 y Fx(;)14 b(:)g(:)g(:)f(C)1595 3856 y Fk(M)1589 3911 y(n)1692 3890 y Fz(j)1090 3990 y Fx(h)23 b Fz(2)28 b Fx(M)36 b FD(and)27 b Fx(h)h FD(is)f(an)h(atom)f(in)h Fx(C)2165 4002 y Ft(0)2202 3990 y Fz(g)2327 3939 y Fx(;)14 b FD(otherwise)3208 3879 y(\(4.8\))515 4169 y(where)35 b Fx(M)45 b Fd(2)37 b Fx(C)42 b FD(denotes)36 b(that)g Fx(M)44 b FD(do)r(esn't)36 b(satisfy)g(the)g(w)n(eigh)n(t)f(constrain)n(t)g Fx(C)6 b FD(.)62 b(The)515 4268 y(ab)r(o)n(v)n(e)39 b(de\014nition)h(lo)r(oks) f(quite)i(ugly)f(but)g(basically)f(it)i(just)g(sa)n(ys)d(that)j(a)f (rule)g(with)515 4368 y(an)32 b(unsatis\014ed)g(b)r(o)r(dy)g(is)g (dropp)r(ed)g(out)g(of)g(the)h(reduct)f(and)g(the)h(negativ)n(e)e (literals)g(are)515 4468 y(dropp)r(ed)c(from)g(the)h(remaining)f (rules.)639 4567 y(I)g(guess)e(that)i(most)f(of)h(the)f(readers)f(can)h (guess)g(b)n(y)g(no)n(w)f(ho)n(w)h(the)h(reduct)f(is)h(de\014ned)515 4667 y(for)34 b(w)n(eigh)n(t)f(constrain)n(t)h(programs.)55 b(It)35 b(is)f(formed)g(b)n(y)g(taking)g(union)g(o)n(v)n(er)f(reducts)h (of)515 4767 y(individual)27 b(rules.)1562 4949 y Fx(P)1627 4915 y Fk(M)1724 4949 y FD(=)c Fz(f)p Fx(R)1918 4915 y Fk(M)2014 4949 y Fz(j)g Fx(R)h Fz(2)f Fx(P)12 b Fz(g)876 b FD(\(4.9\))1905 5255 y(30)p eop %%Page: 31 35 31 34 bop 639 523 a FD(The)26 b(rules)e(in)i(the)f(reduct)g(ha)n(v)n(e) f(all)h(same)g(form:)35 b(they)26 b(ha)n(v)n(e)e(a)g(single)h(atom)g (as)f(head)515 623 y(and)g(there)g(are)f(no)h(negativ)n(e)f(literals)h (in)h(the)f(w)n(eigh)n(t)g(constrain)n(ts)f(of)h(the)h(rule)f(b)r(o)r (dy)-7 b(.)36 b(W)-7 b(e)515 722 y(call)27 b(these)h(rules)f Fy(Horn)i(weight)i(rules)j FD(analogously)25 b(to)j(the)g(de\014nition) g(for)f(basic)g(rules.)639 822 y(W)-7 b(e)36 b(can)e(de\014ne)i(the)f (Knaster-T)-7 b(arski)32 b(op)r(erator)h Fx(T)2314 834 y Fk(P)2404 822 y FD(for)i(Horn)f(w)n(eigh)n(t)h(rules)f(in)h(a)515 922 y(similar)27 b(w)n(a)n(y)f(that)i(it)g(w)n(as)e(de\014ned)i(for)f (basic)g(Horn)h(rules.)959 1099 y Fx(T)1008 1111 y Fk(P)1062 1099 y FD(\()p Fx(M)9 b FD(\))24 b(=)e Fz(f)p Fx(h)h Fz(j)k Fx(h)c Fz( )g Fx(C)1726 1111 y Ft(1)1764 1099 y Fx(;)14 b(:)g(:)g(:)g(C)1971 1111 y Fk(n)2044 1099 y FD(is)27 b(a)g(rule)h(in)g(the)g(program)1490 1223 y(and)g Fx(C)1711 1235 y Ft(1)1748 1223 y Fx(;)14 b(:)g(:)g(:)g(;)g(C) 1992 1235 y Fk(n)2065 1223 y FD(are)27 b(all)g(satis\014ed)g(b)n(y)h Fx(M)8 b Fz(g)3167 1162 y FD(\(4.10\))515 1402 y FC(Example)30 b(4.8)722 1568 y FD(Consider)d(the)h(follo)n(wing)e(program)1869 1538 y Ft(3)1932 1568 y Fx(P)12 b FD(:)722 1767 y FC(Program)31 b(4.11)905 1884 y FB(a)43 b(:-)g(1)g([)g(a)g(=)h(1)f(].)905 1983 y(b)g(:-)g(0)g([)g(b)g(=)h(100)e(].)905 2083 y(c)h(:-)g(6)g([)g(b) g(=)h(5,)e(d)h(=)h(1],)e(2)h([)g(b)h(=)f(2,)f(a)i(=)f(2].)905 2183 y(d)g(:-)g(1)g([)g(a)g(=)h(1,)e(b)h(=)h(1,)e(c)i(=)f(1)g(].)722 2349 y FD(W)-7 b(e)28 b(start)f(iterating)g(the)h Fx(T)1593 2361 y Fk(P)1676 2349 y FD(from)f(the)h(empt)n(y)g(set.)799 2515 y(1.)41 b Fx(T)954 2527 y Fk(P)1009 2515 y FD(\()p Fz(;)p FD(\))25 b(=)f Fz(f)p Fx(b)p Fz(g)p FD(,)k(b)r(ecause)g(the)h (empt)n(y)g(set)f(satis\014es)g(the)h(b)r(o)r(dy)g(of)g(the)g(second) 905 2614 y(rule.)799 2747 y(2.)41 b Fx(T)954 2759 y Fk(P)1009 2747 y FD(\()p Fz(f)p Fx(b)p Fz(g)p FD(\))22 b(=)h Fz(f)p Fx(b;)14 b(d)p Fz(g)p FD(,)24 b(b)r(ecause)g Fx(b)f FD(=)f(1)j(is)f (enough)g(to)g(satisfy)h(the)g(constrain)n(t)e(of)905 2847 y(the)28 b(last)f(rule.)799 2980 y(3.)41 b Fx(T)954 2992 y Fk(P)1009 2980 y FD(\()p Fz(f)p Fx(b;)14 b(d)p Fz(g)p FD(\))27 b(=)g Fz(f)p Fx(b;)14 b(c;)g(d)p Fz(g)p FD(,)29 b(as)h Fx(w)r FD(\()p Fz(f)p Fx(b;)14 b(d)p Fz(g)p FD(\))28 b(=)f(6)g Fz(\025)g FD(6)j(in)g(the)h(\014rst)f(constrain)n(t) f(of)905 3079 y(the)f(rule)f(for)g Fx(c)h FD(and)f Fx(w)r FD(\()p Fz(f)p Fx(b)p Fz(g)p FD(\))c(=)g(2)f Fz(\025)h FD(2)k(in)h(the)g(second)f(constrain)n(t.)799 3212 y(4.)41 b Fx(T)954 3224 y Fk(P)1009 3212 y FD(\()p Fz(f)p Fx(b;)14 b(c;)g(d)p Fz(g)p FD(\))22 b(=)h Fz(f)p Fx(b;)14 b(c;)g(d)p Fz(g)26 b FD(and)h(the)h(\014xed)g(p)r(oin)n(t)g(is)f(found.)3324 3378 y Fi(\006)639 3544 y FD(Unfortunately)34 b(w)n(e)g(can't)g (de\014ne)h(the)f(stable)g(mo)r(dels)g(of)g(a)g(w)n(eigh)n(t)f(rule)h (program)515 3644 y(using)20 b(only)g(reducts.)34 b(The)21 b(problem)f(is)h(that)g(w)n(e)f(threw)h(out)f(all)h(upp)r(er)f(b)r (ounds)h(of)g(w)n(eigh)n(t)515 3743 y(constrain)n(ts)29 b(while)i(computing)f(the)h(reduct)f(and)h(w)n(e)f(ha)n(v)n(e)f(to)h (ensure)g(that)h(the)g(mo)r(del)515 3843 y(satis\014es)c(also)f(the)i (upp)r(er)g(b)r(ounds.)639 3943 y(A)f(set)g Fx(M)35 b FD(of)26 b(atoms)g(is)h(a)f Fy(stable)j(mo)l(del)36 b FD(of)27 b(a)f(w)n(eigh)n(t)g(constrain)n(t)f(program)g Fx(P)38 b FD(if)27 b(and)515 4042 y(only)g(if)h(the)g(follo)n(wing)f(t) n(w)n(o)f(conditions)h(are)g(met:)616 4208 y(1.)41 b Fx(M)c FD(satis\014es)26 b(all)i(rules)f(in)h Fx(P)12 b FD(;)27 b(and)616 4374 y(2.)41 b Fx(M)c FD(is)27 b(the)h(least)f (\014xp)r(oin)n(t)h(of)f Fx(T)1710 4391 y Fk(P)1761 4374 y Fe(M)13 b FD(\()p Fz(;)p FD(\).)515 4557 y FC(Example)30 b(4.9)722 4723 y FD(Let)e(a)f(program)f Fx(P)39 b FD(b)r(e)28 b(simply:)p 515 4776 1146 4 v 607 4830 a Fs(3)642 4853 y Fr(Here)21 b(w)n(e)h(use)g(the)g Fq(lparse)h Fr(syn)n(tax.)32 b(Namely)-6 b(,)20 b(the)j Fc(\024)e Fr(sym)n(b)r(ol)f(is)h(left)g(out) i(and)f(the)g(square)g(brac)n(k)n(ets)515 4932 y(denote)j(w)n(eigh)n(t) g(constrain)n(ts.)1905 5255 y FD(31)p eop %%Page: 32 36 32 35 bop 722 523 a FC(Program)31 b(4.12)905 639 y FB(1)43 b([)g(a)g(=)h(1,)e(b)i(=)f(1)g(])g(1.)722 805 y FD(No)n(w)32 b Fx(M)997 817 y Ft(1)1064 805 y FD(=)f Fz(f)p Fx(a)p Fz(g)g FD(is)h(a)g(stable)g(mo)r(del)g(of)g Fx(P)44 b FD(as)32 b Fx(M)2361 817 y Ft(1)2430 805 y FD(satis\014es)f(the)i(only) e(rule)h(and)722 905 y(the)c(reduct)g Fx(P)1189 875 y Fk(M)1290 905 y FD(of)g(the)g(program)d(is)905 1054 y FB(a.)722 1187 y FD(Similarily)k(for)g Fx(M)1310 1199 y Ft(2)1373 1187 y FD(=)c Fz(f)p Fx(b)p Fz(g)p FD(.)41 b(On)29 b(the)h(other)f(hand,)h Fz(f)p Fx(a;)14 b(b)p Fz(g)27 b FD(is)j(not)f(a)g(stable)g(mo)r(del)722 1287 y(ev)n(en)e(though)h(the)g(reduct)f(of)h(the)g(program)d(is)905 1436 y FB(a.)905 1536 y(b.)722 1669 y FD(since)j(the)h(com)n(bined)f(w) n(eigh)n(ts)f(of)h Fx(a)h FD(and)f Fx(b)g FD(are)f(more)g(than)h(the)h (upp)r(er)g(b)r(ound)f(of)722 1768 y(the)g(rule.)2297 b Fi(\006)515 1951 y FC(Example)30 b(4.10)722 2117 y FD(Let's)e(no)n(w)f(lo)r(ok)g(at)g(a)g(sligh)n(tly)g(more)g(complex)g (example)h(program)d Fx(P)12 b FD(:)722 2316 y FC(Program)31 b(4.13)905 2433 y FB(1)43 b([)g(a=1,)f(b=1,)g(c=1)g(])i(2)f(:-)g(2)g([) g(d=1,)f(not)g(b=1,)g(not)g(e=3)h(])g(4.)905 2532 y(1)g([)g(d=3,)f(e=2) h(])g(5.)722 2698 y FD(No)n(w)28 b Fx(M)993 2710 y Ft(1)1054 2698 y FD(=)23 b Fz(f)p Fx(a;)14 b(d;)g(e)p Fz(g)27 b FD(is)h(one)g(stable)g(mo)r(del)h(of)f(the)g(program.)37 b(The)28 b(reduct)g Fx(P)3279 2668 y Fk(M)3342 2676 y Fb(1)722 2798 y FD(is)g(no)n(w)905 2947 y FB(a)43 b(:-)g(1)g([)g(d)g (=1)g(].)905 3047 y(d.)905 3147 y(e.)722 3279 y FD(and)38 b(the)f(least)g(\014xp)r(oin)n(t)h(of)f Fx(T)1720 3298 y Fk(P)1771 3279 y Fe(M)1824 3291 y Fb(1)1904 3279 y FD(=)i Fx(M)2089 3291 y Ft(1)2163 3279 y FD(and)f(the)f(mo)r(del)h (satis\014es)e(all)i(rules.)722 3379 y(Ho)n(w)n(ev)n(er,)26 b Fx(M)1161 3391 y Ft(2)1221 3379 y FD(=)c Fz(f)p Fx(d;)14 b(a)p Fz(g)26 b FD(is)i(not)f(a)g(stable)f(mo)r(del)i(b)r(ecause)f(the) g(constrain)n(t)f(in)i(the)722 3479 y(\014rst)i(rule)f(b)r(o)r(dy)h(is) f(not)h(satis\014ed)f(\()p Fx(w)r FD(\()p Fx(M)9 b FD(\))27 b(=)f(5)g Fz(\025)g FD(4\))j(so)g(it)h(is)g(dropp)r(ed)f(out)g(from)722 3578 y(the)f(reduct)g(and)f(there)h(is)f(no)g(longer)g(an)n(y)g(w)n(a)n (y)f(to)h(deduce)h Fx(a)p FD(.)608 b Fi(\006)639 3744 y FD(In)32 b(the)g(b)r(eginning)f(of)h(this)g(section)f(I)h(claimed)f (that)h(negativ)n(e)e(w)n(eigh)n(ts)h(can)g(b)r(e)h(re-)515 3844 y(mo)n(v)n(ed.)j(This)26 b(is)h(pro)n(v)n(en)d(in)j([12)o(])f(and) h(I)f(only)g(presen)n(t)f(here)h(the)h(translation.)35 b(A)27 b(w)n(eigh)n(t)515 3944 y(constrain)n(t)1330 4126 y Fx(L)c Fz(\024)f(f)p Fx(a)h FD(=)f Fz(\000)p Fx(w)1817 4138 y Fk(a)1858 4126 y Fx(;)14 b FD(not)27 b Fx(b)c FD(=)f Fz(\000)p Fx(w)2312 4138 y Fk(b)2346 4126 y Fz(g)g(\024)h Fx(U)612 b FD(\(4.11\))515 4309 y(can)27 b(b)r(e)h(transformed)e(to)i (an)f(equal)g(form)999 4491 y Fx(L)18 b FD(+)g Fx(w)1216 4503 y Fk(a)1275 4491 y FD(+)g Fx(w)1417 4503 y Fk(b)1474 4491 y Fz(\024)23 b(f)p FD(not)k Fx(a)c FD(=)g Fx(w)1965 4503 y Fk(a)2005 4491 y Fx(;)14 b(b)23 b FD(=)f Fx(w)2247 4503 y Fk(b)2281 4491 y Fz(g)h(\024)f Fx(U)28 b FD(+)18 b Fx(w)2660 4503 y Fk(a)2719 4491 y FD(+)g Fx(w)2861 4503 y Fk(b)3167 4491 y FD(\(4.12\))515 4674 y(The)26 b(idea)g(here)g(is)h(that)g(instead)f(of)g(subtracting)g Fx(w)2174 4686 y Fk(a)2241 4674 y FD(from)g(the)h(total)f(w)n(eigh)n(t) g(when)h Fx(a)f FD(is)515 4774 y Fu(true)p FD(,)g(w)n(e)f(add)g Fx(w)1040 4786 y Fk(a)1106 4774 y FD(if)h Fx(a)f FD(is)h(not)f(true)g (and)h(w)n(e)f(raise)f(the)i(b)r(ounds)f(with)h(the)g(same)e(amoun)n (t,)515 4873 y(the)k(net)g(result)f(b)r(eing)h(the)g(same.)1905 5255 y(32)p eop %%Page: 33 37 33 36 bop 515 523 a FA(4.7)135 b(Classical)47 b(Negation)515 705 y FD(The)34 b(basic)f(v)n(ersion)g(of)g(the)i(stable)e(mo)r(del)i (seman)n(tics)e(has)g(only)h Fy(ne)l(gation)i(as)g(failur)l(e)6 b FD(.)515 805 y(That)31 b(is,)g(w)n(e)g(conclude)g(not)g Fx(a)g FD(if)g(w)n(e)g(can't)g(pro)n(v)n(e)e(that)i Fx(a)g FD(is)g(true.)47 b(Sometimes)31 b(this)g(is)515 904 y(not)25 b(desirable.)36 b(F)-7 b(or)25 b(example,)h(supp)r(ose)f(that)h(w)n(e)f (w)n(an)n(t)g(to)h(c)n(hec)n(k)f(whether)g(it)h(is)g(safe)f(to)515 1004 y(cross)h(railroad)f(trac)n(ks.)36 b(This)27 b(could)h(b)r(e)g (expressed)e(with)i(a)f(rule:)1610 1183 y Fy(safe)d Fz( )f FD(not)28 b Fx(tr)r(ain)42 b(:)639 1362 y FD(The)22 b(problem)g(here)g (is)g(that)g(w)n(e)g(consider)f(the)i(crossing)d(to)i(b)r(e)g(safe)g (if)h(w)n(e)f(can't)g(pro)n(v)n(e)515 1462 y(that)29 b(a)g(train)f(is)h(coming.)40 b(A)30 b(more)e(safe)h(approac)n(h)e(w)n (ould)h(b)r(e)i(to)f(declare)e(the)j(crossing)515 1562 y(safe)d(only)g(if)h(w)n(e)f(can)h(pro)n(v)n(e)e(that)h(train)h(is,)f (indeed,)h(not)g(coming:)1656 1741 y Fy(safe)c Fz( )f(:)p Fx(tr)r(ain)42 b(:)639 1920 y FD(This)22 b(stronger)f(negation)g(is)h (called)g(the)g Fy(classic)l(al)27 b(ne)l(gation)i FD(and)22 b(programs)e(utilizing)515 2020 y(it)k(are)e(usually)h(called)g Fy(extende)l(d)i(lo)l(gic)j(pr)l(o)l(gr)l(ams)7 b FD(.)35 b(The)24 b(extended)g(logic)e(programs)f(w)n(ere)515 2119 y(prop)r(osed)26 b(in)i([3].)639 2219 y(The)k(seman)n(tics)e(of)i (the)f(extended)h(logic)e(programs)g(di\013ers)h(a)g(bit)h(from)f(the)g (stable)515 2319 y(mo)r(del)d(seman)n(tics)g(of)g(oridinary)f (programs.)36 b(The)29 b Fy(answer)h(set)36 b Fx(S)d FD(of)c(an)f(extended)g(pro-)515 2418 y(gram)f Fx(P)39 b FD(is)28 b(a)g(minimal)g(subset)g(of)g(the)h(Herbrand)e(base)g FC(HB)p FD(\()p Fx(P)12 b FD(\))28 b(of)g(the)g(program)e(suc)n(h)515 2518 y(that:)616 2681 y(1.)41 b(for)27 b(an)n(y)g(rule)g Fx(l)1197 2693 y Fk(o)1257 2681 y Fz( )c Fx(l)1388 2693 y Ft(1)1425 2681 y Fx(;)14 b(:)g(:)g(:)g(;)g(l)1635 2693 y Fk(n)1707 2681 y FD(in)28 b Fx(P)12 b FD(,)28 b(if)g Fx(l)2021 2693 y Ft(1)2058 2681 y FD(,)g Fx(:)14 b(:)g(:)f FD(,)28 b Fx(l)2295 2693 y Fk(n)2368 2681 y Fz(2)g Fx(S)5 b FD(,)27 b(then)h Fx(l)2771 2693 y Fk(o)2831 2681 y Fz(2)c Fx(S)5 b FD(;)27 b(and)616 2846 y(2.)41 b(if)28 b Fx(S)33 b FD(con)n(tains)26 b(a)i(pair)e(of)i(complemen)n(tary)e (literals,)h(then)h Fx(S)g FD(=)23 b FC(HB)o FD(\()p Fx(P)12 b FD(\).)639 3009 y(There)39 b(are)g(t)n(w)n(o)g(di\013eren)n (t)g(w)n(a)n(ys)f(ho)n(w)h(an)h(extended)f(program)f(can)h(fail)h(to)f (ha)n(v)n(e)515 3109 y(an)d(useful)i(answ)n(er)d(set.)65 b(Either)36 b(there)h(is)g(no)f(answ)n(er)g(at)g(all)h(or)f(the)h(only) g(answ)n(er)e(is)515 3209 y(inconsisten)n(t.)515 3388 y FC(Example)30 b(4.11)722 3551 y FD(Consider)d(the)h(follo)n(wing)e (program)g Fx(P)12 b FD(:)1653 3725 y Fx(a)23 b Fz( )g FD(not)28 b Fx(b)166 b(b)23 b Fz( )g FD(not)k Fx(a)1653 3825 y(d)c Fz( )g FD(not)28 b Fx(c)167 b(c)23 b Fz( )g FD(not)28 b Fx(d)1624 3924 y Fz(:)p Fx(e)23 b Fz( )g FD(not)k Fx(a)140 b(e)23 b Fz( )g FD(not)28 b Fx(c)1569 4024 y(f)k Fz( )23 b FD(not)k Fx(f)t(;)14 b(b;)g(d)722 4199 y FD(This)28 b(program)d(has)i(three)h(answ)n(er)e(sets:)1615 4379 y Fx(S)1666 4391 y Ft(1)1726 4379 y FD(=)50 b Fz(f)p Fx(a;)14 b(d;)g Fz(:)p Fx(e)p Fz(g)1615 4503 y Fx(S)1666 4515 y Ft(2)1726 4503 y FD(=)50 b Fz(f)p Fx(b;)14 b(c;)g(e)p Fz(g)1615 4628 y Fx(S)1666 4640 y Ft(3)1726 4628 y FD(=)50 b Fz(f)p Fx(a;)14 b(b;)g(c;)g(d;)g(e;)g Fz(:)p Fx(e;)g(f)9 b Fz(g)722 4807 y FD(The)25 b(\014rst)g(t)n(w)n(o)g(answ)n(er)e(sets,)j Fx(S)1721 4819 y Ft(1)1783 4807 y FD(and)f Fx(S)1993 4819 y Ft(2)2055 4807 y FD(are)g(consisten)n(t)f(and)h Fx(S)2785 4819 y Ft(3)2847 4807 y FD(is)g(inconsisten)n(t.)722 4907 y(It)c(is)f(not)h(p)r(ossible)f(to)g(ha)n(v)n(e)f(an)i(answ)n(er)d (set)j(where)f(b)r(oth)h Fx(b)f FD(and)g Fx(d)h FD(are)e(true)h(b)r (ecause)722 5006 y(it)28 b(will)g(cause)f(the)h(last)f(rule)h(to)f (\014re)g(causing)g(a)g(con)n(tradiction.)562 b Fi(\006)1905 5255 y FD(33)p eop %%Page: 34 38 34 37 bop 639 523 a FB(Lparse)25 b FD(handles)j(extended)g(programs)d (b)n(y)i(transforming)f(the)i(programs)e(in)n(to)h(nor-)515 623 y(mal)32 b(logic)g(programs.)51 b(The)33 b(rules)f(are)g(otherwise) g(una\013ected)h(but)h(for)e(eac)n(h)g(negativ)n(e)515 722 y(atom)27 b Fz(:)p Fx(a)h FD(that)g(o)r(ccurs)e(in)i(the)g (program,)e(the)i(rule:)1804 877 y Fz( )23 b Fx(a;)14 b Fz(:)p Fx(a)1077 b FD(\(4.13\))515 1033 y(is)24 b(added.)36 b(Note)25 b(that)g(this)g(approac)n(h)e(di\013ers)i(from)f(the)i(seman) n(tics)e(describ)r(ed)g(ab)r(o)n(v)n(e)g(in)515 1132 y(that)d(the)g(inconsisten)n(t)f(answ)n(er)f(sets)i(are)f (automatically)f(rejected.)35 b(As)21 b(this)g(information)515 1232 y(is)27 b(sometimes)h(useful,)g FB(lparse)d FD(has)i(a)g(v)-5 b(arian)n(t)27 b(b)r(eha)n(vior)f(that)i(can)g(b)r(e)g(initialized)g (with)515 1331 y(the)h(command)g(line)g(option)g FB(--allow-inconsis)o (ten)o(t-)o(an)o(swe)o(rs)o FD(.)36 b(With)30 b(it,)g(a)e(sp)r(ecial) 515 1431 y(atom)i FB(INCONSISTENT)c FD(is)k(added)h(to)g(the)g(program) d(that)j(is)g(true)g(whenev)n(er)e(the)i(stable)515 1531 y(mo)r(del)c(con)n(tains)g(complemen)n(tary)g(literals:)1440 1686 y(INCONSISTENT)c Fz( )g Fx(a;)14 b Fz(:)p Fx(a)42 b(:)713 b FD(\(4.14\))515 1956 y FA(4.8)135 b(P)l(artial)47 b(Mo)t(dels)e(and)f(Disjunctiv)l(e)i(Programs)515 2138 y Fv(Smodels)23 b FD(and)h FB(lparse)e FD(no)n(w)i(include)g (facilities)h(to)f(compute)g(stable)g(and)g(partial)f(mo)r(d-)515 2237 y(els)f(for)g(disjunctiv)n(e)h(logic)e(programs.)33 b(Ho)n(w)n(ev)n(er,)22 b(this)g(functionalit)n(y)h(is)f(still)h(quite)f (prim-)515 2337 y(itiv)n(e.)34 b(Disjunctiv)n(e)22 b(logic)e(programs)f (are)h(discussed)h(in)g(detail)g(in)h([1)o(])g(and)e(the)i(theoretical) 515 2436 y(basis)27 b(for)g(the)h(partial)e(mo)r(del)i(expansion)f(is)g (in)n(tro)r(duced)h(in)f([5].)639 2536 y(The)32 b(disjunctiv)n(e)f(mo)r (del)h(seman)n(tics)e(is)h(enabled)g(b)n(y)g(selecting)g(the)h(command) f(line)515 2636 y(option)f FB(--dlp)f FD(and)i(the)h(partial)e(mo)r (del)h(expansion)f(b)n(y)h(the)g(option)g FB(--partial)p FD(.)43 b(The)515 2735 y(exact)19 b(output)h(of)f(the)h(partial)f(mo)r (del)h(expansion)e(can)i(b)r(e)g(altered)f(with)h(the)g FB(-r)e FD(command)515 2835 y(line)28 b(option.)515 3063 y Fh(4.8.1)112 b(Disjunctiv)m(e)36 b(Programs)515 3216 y FD(A)28 b Fy(disjuntive)i(rule)k FD(is)28 b(of)f(the)h(form)1523 3371 y Fx(a)1567 3383 y Ft(1)1627 3371 y Fz(j)23 b Fx(a)1717 3383 y Ft(2)1778 3371 y Fz(j)g(\001)14 b(\001)g(\001)23 b(j)g Fx(a)2034 3383 y Fk(n)2102 3371 y Fz( )g Fx(body)799 b FD(\(4.15\))639 3526 y(If)40 b(the)f(b)r(o)r(dy)g(of)g(a)g (disjunctiv)n(e)g(rule)f(is)h(true,)j(at)d(least)f(one)h(of)g(the)g (head)g(atoms)515 3626 y Fx(a)559 3638 y Ft(1)596 3626 y FD(,)33 b Fx(:)14 b(:)g(:)g FD(,)33 b Fx(a)863 3638 y Fk(n)942 3626 y FD(has)g(to)g(b)r(e)g(true.)54 b(A)34 b Fy(disjunctive)i(lo)l(gic)g(pr)l(o)l(gr)l(am)k FD(is)33 b(a)g(set)h(of)f(disjunctiv)n(e)515 3725 y(rules.)639 3825 y(The)22 b Fy(r)l(e)l(duct)29 b Fx(P)1116 3795 y Fk(M)1104 3848 y(D)1212 3825 y FD(of)21 b(a)h(disjunctiv)n(e)g(program) d Fx(P)2155 3837 y Fk(D)2259 3825 y FD(is)j(obtained)g(using)f(the)h (pro)r(cedure)515 3925 y(that)28 b(w)n(as)f(used)h(with)h(normal)e (logic)g(programs.)36 b(That)28 b(is,)h(all)f(rules)f(with)i (unsatis\014able)515 4024 y(negativ)n(e)g(literals)h(in)h(the)h(b)r(o)r (dy)f(are)e(dropp)r(ed)i(as)f(w)n(ell)h(as)f(all)g(remaining)g(negativ) n(e)g(lit-)515 4124 y(erals.)38 b(A)29 b(set)g Fx(M)37 b FD(of)28 b(atoms)g(is)g(a)h Fy(disjunctive)i(stable)g(mo)l(del)38 b FD(of)29 b Fx(P)2622 4136 y Fk(D)2711 4124 y FD(i\013)g Fx(M)37 b FD(is)29 b(a)f(minimal)515 4223 y(mo)r(del)f(of)h Fx(P)921 4193 y Fk(M)909 4246 y(D)995 4223 y FD(.)37 b(Note)27 b(that)h Fx(P)1500 4193 y Fk(M)1488 4246 y(D)1601 4223 y FD(ma)n(y)f(ha)n(v)n(e)g(more)f(than)i(one)f(minimal)h(mo)r (del.)639 4323 y(It)19 b(w)n(as)f(easy)f(to)i(\014nd)g(the)g(minimal)g (mo)r(del)f(of)h(the)g(reduct)f(of)h(a)f(normal)f(logic)h(program.)515 4423 y(Ho)n(w)n(ev)n(er,)27 b(this)i(is)f(not)h(the)g(case)f(with)h (disjunctiv)n(e)g(programs.)38 b(In)29 b(fact,)h(after)e(w)n(e)g(ha)n (v)n(e)515 4522 y(found)41 b(a)f(mo)r(del)h(for)f(the)h(reduct)f(it)h (is)g(still)f(a)h(NP-complete)f(problem)g(to)g(\014nd)h(out)515 4622 y(whether)27 b(it)h(is)g(minimal)g(or)e(not.)p 432 4666 4 17 v 432 4700 V 432 4733 V 432 4766 V 432 4799 V 432 4832 V 432 4866 V 432 4899 V 432 4932 V 432 4965 V 432 4998 V 639 4707 a(Because)36 b(of)g(this)h(complexit)n(y)-7 b(,)39 b(pure)d FB(smodels)e FD(do)r(esn't)j(handle)f(disjunctiv)n(e)h (pro-)515 4807 y(grams)30 b(correctly)-7 b(.)49 b(Ho)n(w)n(ev)n(er,)31 b(y)n(ou)g(can)h(still)g(solv)n(e)f(disjunctiv)n(e)h(queries)f(b)n(y)h (using)g(t)n(w)n(o)515 4907 y(in)n(terlea)n(v)n(ed)22 b FB(smodels)f FD(pro)r(cesses.)34 b(The)23 b(\014le)h FB(example4.cc)c FD(in)k(the)g FB(smodels/example)o(s)515 5006 y FD(directory)i(sho)n(ws)g(ho)n(w)h(it)h(is)g(done.)1905 5255 y(34)p eop %%Page: 35 39 35 38 bop 515 523 a FC(Example)30 b(4.12)722 683 y FD(Consider)d(a)g (disjunctiv)n(e)h(program)e Fx(P)1942 695 y Fk(D)2002 683 y FD(:)722 876 y FC(Program)31 b(4.14)905 992 y FB(a)43 b(|)g(b)g(:-)g(c.)905 1091 y(c)g(:-)g(not)f(d.)905 1191 y(d)h(:-)g(not)f(c.)722 1354 y FD(This)26 b(program)e(has)h(three)h (disjunctiv)n(e)g(stable)f(mo)r(dels.)37 b(Either)25 b Fx(c)h FD(or)f Fx(d)h FD(has)f(to)h(b)r(e)722 1454 y(in)k(a)f(mo)r(del)g(and)g(if)h Fx(c)f FD(is)g(c)n(hosen,)g(w)n(e)g (ha)n(v)n(e)f(to)h(add)g Fx(a)g FD(or)f Fx(b)h FD(in)h(the)f(mo)r(del.) 42 b(Th)n(us,)722 1554 y(the)35 b(mo)r(dels)f(are:)49 b Fx(M)1423 1566 y Ft(1)1494 1554 y FD(=)34 b Fz(f)p Fx(d)p Fz(g)p FD(,)h Fx(M)1859 1566 y Ft(2)1930 1554 y FD(=)f Fz(f)p Fx(c;)14 b(a)p Fz(g)p FD(,)35 b(and)f Fx(M)2537 1566 y Ft(3)2608 1554 y FD(=)f Fz(f)p Fx(b;)14 b(c)p Fz(g)p FD(.)56 b(The)34 b(fourth)722 1653 y(p)r(ossibilit)n(y)-7 b(,)31 b Fx(M)1227 1623 y Fg(0)1277 1653 y FD(=)c Fz(f)p Fx(c;)14 b(a;)g(b)p Fz(g)28 b FD(is)i(not)g(a)g(disjunctiv)n(e)g(mo)r (del)g(since)g Fx(M)2935 1665 y Ft(2)3002 1653 y FD(is)g(a)g(mo)r(del) 722 1753 y(and)e Fx(M)965 1765 y Ft(2)1025 1753 y Fz(\032)22 b Fx(M)1202 1723 y Fg(0)1253 1753 y FD(so)27 b(that)h Fx(M)1625 1723 y Fg(0)1675 1753 y FD(is)g(not)f(minimal.)1100 b Fi(\006)639 1913 y FD(A)33 b(disjunctiv)n(e)f(rule)g(of)f(the)i(form) e(\(4.15\))h(is)g(v)n(ery)e(similar)i(to)f(a)h(w)n(eigh)n(t)f (constrain)n(t)515 2013 y(rule)c(of)h(the)g(form)1447 2188 y(1)23 b Fz(\024)f(f)p Fx(a)1685 2200 y Ft(1)1722 2188 y Fx(;)14 b(a)1803 2200 y Ft(2)1840 2188 y Fx(;)g(:)g(:)g(:)f(;)h (a)2068 2200 y Fk(n)2113 2188 y Fz(g)23 b( )g Fx(body)723 b FD(\(4.16\))515 2364 y(but)26 b(there)f(is)h(one)f(subtle)h (di\013erence:)35 b(disjunctiv)n(e)26 b(stable)f(mo)r(dels)h(are)e(alw) n(a)n(ys)g(minimal)515 2464 y(while)30 b(there)h(ma)n(y)f(b)r(e)h (non-minimal)f(stable)g(mo)r(dels)h(of)f(w)n(eigh)n(t)g(constrain)n(t)f (programs.)515 2563 y(F)-7 b(or)27 b(example,)g(if)h(w)n(e)f(replace)g (the)h(\014rst)f(rule)g(of)h(Program)d(4.14)h(with)722 2677 y FB(1)43 b Fz(f)h FB(a,)e(b)h Fz(g)h FB(:-)e(c.)639 2776 y FD(then)28 b Fz(f)p Fx(a;)14 b(b;)g(c)p Fz(g)26 b FD(is)i(a)f(stable)g(mo)r(del)h(of)g(the)g(program.)515 3007 y Fh(4.8.2)112 b(P)m(artial)36 b(Mo)s(dels)515 3161 y FD(As)31 b(w)n(e)f(sa)n(w)g(in)h(Section)f(4.1,)h(an)g(in)n (terpretation)e(of)i(a)f(logic)g(program)f(assigns)g(a)i(truth)515 3260 y(v)-5 b(alue)29 b(to)g(atoms)g(in)h(the)f(Herbrand)g(base)g(of)g (the)h(program.)40 b(Eac)n(h)28 b(atom)h(is)h(either)f Fu(true)515 3360 y FD(or)f Fu(false)h FD(in)g(the)g(in)n(terpretation.) 41 b(A)29 b Fy(p)l(artial)j(interpr)l(etation)k FD(is)29 b(an)g(in)n(terpretation)f(that)515 3460 y(assigns)23 b(a)h(de\014nite)i(truth)f(v)-5 b(alue)25 b(only)f(to)h(some)f(atoms)g (of)h(the)g(base)f(and)h(the)g(rest)f(of)h(the)515 3559 y(atoms)j(are)f(said)h(to)h(ha)n(v)n(e)e Fu(unkno)n(wn)g FD(truth)i(v)-5 b(alue.)40 b(F)-7 b(ormally)g(,)28 b(a)g(partial)g(in)n (terpretation)515 3659 y Fx(I)40 b FD(of)33 b(a)g(program)e Fx(P)45 b FD(is)33 b(a)g(pair)f Fz(h)p Fx(T)7 b(;)14 b(F)e Fz(i)33 b FD(of)g(subsets)g(of)g(the)h(Herbrand)e(base)h FC(HB)o FD(\()p Fx(P)12 b FD(\))34 b(of)515 3758 y(the)h(program)e(suc) n(h)h(that)h Fx(T)f Fz(\\)24 b Fx(F)47 b FD(=)34 b Fz(;)p FD(.)58 b(The)35 b(atoms)f(in)h(sets)g Fx(I)2617 3728 y Fk(t)2681 3758 y FD(=)f Fx(T)12 b FD(,)36 b Fx(I)2943 3728 y Fk(f)3021 3758 y FD(=)f Fx(F)12 b FD(,)36 b(and)515 3858 y Fx(I)558 3828 y Fk(u)637 3858 y FD(=)e FC(HB)p FD(\()p Fx(P)12 b FD(\))24 b Fz(\000)f FD(\()p Fx(T)34 b Fz([)24 b Fx(F)12 b FD(\))35 b(are)f(considered)g(to)h(b)r(e)h Fu(true)p FD(,)h Fu(false)p FD(,)f(and)f Fu(unkno)n(wn)e FD(in)j(the)515 3958 y(in)n(terpretation.)639 4057 y(A)29 b Fy(p)l(artial)j(mo)l(del)37 b FD(is)29 b(a)f(partial)f(in)n (terpretation)g(that)i(satis\014es)e(all)h(rules)g(of)g(the)h(pro-)515 4157 y(gram.)34 b(Ho)n(w)n(ev)n(er,)24 b(the)h(concept)f(of)g (satisfaction)g(has)g(to)h(b)r(e)g(re\014ned)f(to)g(tak)n(e)g(in)n(to)h (accord)515 4257 y(the)j(fact)f(that)h(there)f(are)f(no)n(w)h(three)g (di\013eren)n(t)h(truth)g(v)-5 b(alues.)36 b(W)-7 b(e)28 b(imp)r(ose)f(an)g(order)f Fx(<)515 4356 y FD(on)h(truth)h(v)-5 b(alues)27 b(so)g(that)1536 4532 y Fu(false)c Fx(<)g Fu(unkno)n(wn)e Fx(<)h Fu(true)639 4707 y FD(The)29 b(truth)h(v)-5 b(alue)28 b Fx(I)7 b FD(\()p Fx(B)t FD(\))30 b(of)f(the)g(b)r(o)r(dy)g (of)g(a)g(rule)f(is)h(obtained)g(b)n(y)f(taking)g(minim)n(um)515 4807 y(of)i(the)h(truth)g(v)-5 b(alues)30 b(of)g(the)h(literals)f(in)h (the)f(b)r(o)r(dy)h(and)f(the)h(truth)g(v)-5 b(alue)30 b Fx(I)7 b FD(\()p Fx(H)g FD(\))31 b(of)g(the)515 4907 y(head)c(is)h(the)h(maxim)n(um)e(of)h(the)h(truth)f(v)-5 b(alues)28 b(of)f(the)i(head)e(atoms.)38 b(A)28 b(rule)g(is)f (satis\014ed)515 5006 y(when)h Fx(I)7 b FD(\()p Fx(H)g FD(\))23 b Fz(\025)g Fx(I)7 b FD(\()p Fx(B)t FD(\).)1905 5255 y(35)p eop %%Page: 36 40 36 39 bop 515 523 a FC(Example)30 b(4.13)722 686 y FD(Supp)r(ose)e (that)g(w)n(e)f(ha)n(v)n(e)f(a)i(partial)e(in)n(terpretation)1730 865 y Fx(I)7 b FD(\()p Fx(H)g FD(\))24 b(=)e Fz(hf)p Fx(b)p Fz(g)p Fx(;)14 b Fz(f)p Fx(d)p Fz(gi)722 1044 y FD(Supp)r(ose)28 b(further)f(that)h(w)n(e)g(ha)n(v)n(e)e(t)n(w)n(o)h (rules:)905 1191 y FB(a)43 b(|)g(d)g(:-)g(b,)g(not)f(c.)905 1290 y(d)h(:-)g(a.)722 1422 y FD(No)n(w)34 b(the)h(\014rst)f(rule)g(is) g(satis\014ed)g(since)g Fx(I)7 b FD(\()p Fx(a)p FD(\))35 b(=)f Fu(unkno)n(wn)e Fz(\025)i Fx(I)7 b FD(\()p Fx(c)p FD(\))35 b(=)f Fu(unkno)n(wn)n FD(.)722 1522 y(The)28 b(second)f(rule)g(is)h(not)f(satis\014ed)g(as)g Fx(I)7 b FD(\()p Fx(d)p FD(\))24 b(=)f Fu(false)g Fx(<)f(I)7 b FD(\()p Fx(a)p FD(\))24 b(=)f Fu(unkno)n(wn)n FD(.)225 b Fi(\006)639 1685 y FD(A)31 b(partial)f(mo)r(del)g Fx(I)38 b FD(that)30 b(assigns)f(a)h(de\014nite)h(truth)g(v)-5 b(alue)30 b(to)h(all)f(atoms)f(\()p Fx(I)3141 1655 y Fk(u)3213 1685 y FD(=)e Fz(;)p FD(\))515 1785 y(is)f(called)h(a)f Fy(total)k(mo)l(del)36 b FD(or)26 b(alternativ)n(ely)f(a)i Fy(r)l(e)l(gular)i(mo)l(del)9 b FD(.)37 b(A)27 b Fy(total)i(stable)h (mo)l(del)36 b Fx(M)515 1884 y FD(of)25 b Fx(P)37 b FD(is)25 b(a)f(total)h(mo)r(del)h(that)f(is)g(additionally)f(a)h(minimal)g(mo)r (del)h(of)f(the)g(reduct)g Fx(P)3184 1854 y Fk(M)3258 1884 y FD(.)36 b(A)515 1984 y Fy(p)l(artial)31 b(stable)f(mo)l(del)37 b Fx(M)f FD(of)28 b Fx(P)40 b FD(is)27 b(a)g(minimal)h(partial)f(mo)r (del)h(of)f Fx(P)2706 1954 y Fk(M)2780 1984 y FD(.)639 2083 y(W)-7 b(e)32 b(can)f(compute)h(the)g(partial)e(stable)h(mo)r (dels)h(of)f(a)g(disjunctiv)n(e)h(or)f(normal)f(logic)515 2183 y(program)20 b Fx(P)35 b FD(b)n(y)22 b(using)h(a)f(translation)g (that)h(maps)f(it)h(in)n(to)g(another)e(program)g(T)-7 b(r\()p Fx(P)12 b FD(\))23 b(that)515 2283 y(has)i(the)i(prop)r(ert)n (y)e(that)i Fx(M)34 b FD(is)26 b(a)g(stable)g(mo)r(del)h(mo)r(del)f(of) g(T)-7 b(r\()p Fx(P)12 b FD(\))26 b(if)h(and)f(only)g(if)h Fx(M)34 b FD(is)26 b(a)515 2382 y(partial)g(stable)i(mo)r(del)g(of)f Fx(P)12 b FD(.)639 2482 y(W)-7 b(e)23 b(start)f(the)h(translation)e(b)n (y)h(adding)g(a)h(new)f(atom)g Fx(a)2382 2452 y Fg(0)2428 2482 y FD(for)g(eac)n(h)f(atom)i Fx(a)f Fz(2)i FC(HB)p FD(\()p Fx(P)12 b FD(\).)515 2582 y(The)27 b(in)n(tuitiv)n(e)h(meaning) f(of)h Fx(a)1486 2551 y Fg(0)1537 2582 y FD(is)f(that)h(it)g(is)g Fy(p)l(otential)t(ly)j(true)p FD(.)36 b(A)28 b(rule)f(of)h(the)g(form:) 1176 2760 y Fx(a)1220 2772 y Ft(1)1280 2760 y Fz(j)23 b(\001)14 b(\001)g(\001)23 b(j)g Fx(a)1536 2772 y Fk(n)1604 2760 y Fz( )h Fx(b)1747 2772 y Ft(1)1783 2760 y Fx(;)14 b(:)g(:)g(:)g(;)g(b)2004 2772 y Fk(m)2067 2760 y Fx(;)g FD(not)27 b Fx(c)2287 2772 y Ft(1)2324 2760 y Fx(;)14 b(:)g(:)g(:)g(;)g FD(not)27 b Fx(c)2692 2772 y Fk(l)3167 2760 y FD(\(4.17\))515 2939 y(is)g(replaced)g(with)h(the)g(rules:)1141 3112 y Fx(a)1185 3124 y Ft(1)1246 3112 y Fz(j)23 b(\001)14 b(\001)g(\001)23 b(j)g Fx(a)1502 3124 y Fk(n)1570 3112 y Fz( )28 b Fx(b)1717 3124 y Ft(1)1753 3112 y Fx(;)14 b(:)g(:)g(:)g(;)g(b)1974 3124 y Fk(m)2037 3112 y Fx(;)g FD(not)27 b Fx(c)2257 3078 y Fg(0)2257 3133 y Ft(1)2294 3112 y Fx(;)14 b(:)g(:)g(:)g(;)g FD(not)27 b Fx(c)2662 3078 y Fg(0)2662 3133 y Fk(l)1141 3237 y Fx(a)1185 3203 y Fg(0)1185 3257 y Ft(1)1246 3237 y Fz(j)c(\001)14 b(\001)g(\001)23 b(j)g Fx(a)1502 3203 y Fg(0)1502 3257 y Fk(n)1570 3237 y Fz( )28 b Fx(b)1717 3203 y Fg(0)1717 3257 y Ft(1)1753 3237 y Fx(;)14 b(:)g(:)g(:)g(;)g(b)1974 3203 y Fg(0)1974 3257 y Fk(m)2037 3237 y Fx(;)g FD(not)27 b Fx(c)2257 3249 y Ft(1)2294 3237 y Fx(;)14 b(:)g(:)g(:)g(;)g FD(not)27 b Fx(c)2662 3249 y Fk(l)2729 3237 y Fx(:)3167 3175 y FD(\(4.18\))515 3417 y(Additionally)-7 b(,)28 b(T)-7 b(r)o(\()p Fx(P)12 b FD(\))28 b(includes)g(the)g(rule:)1827 3595 y Fx(a)1871 3561 y Fg(0)1917 3595 y Fz( )23 b Fx(a)1100 b FD(\(4.19\))515 3774 y(for)31 b(all)g Fx(a)e Fz(2)h FC(HB)p FD(\()p Fx(P)12 b FD(\))32 b(so)f(an)g(atom)g(is)g(alw)n(a)n (ys)f(p)r(oten)n(tially)h(true)h(if)g(w)n(e)f(kno)n(w)f(that)i(it)g(is) 515 3874 y(true.)639 3973 y(Let)41 b Fx(M)50 b FD(b)r(e)41 b(a)g(stable)g(mo)r(del)g(of)g(T)-7 b(r)o(\()p Fx(P)12 b FD(\).)78 b(Then,)44 b(there)d(exists)g(a)f(partial)g(stable)515 4073 y(in)n(terpretation)26 b Fx(N)36 b FD(of)27 b Fx(P)39 b FD(that)27 b(corresp)r(onds)f(to)h Fx(M)9 b FD(.)36 b(The)27 b(truth)h(v)-5 b(alue)27 b(of)g(an)g(atom)g Fx(a)g FD(in)515 4173 y Fx(N)36 b FD(is)28 b(obtained)f(b)n(y)g(the)h (follo)n(wing)f(three)g(rules:)616 4336 y(1.)41 b(If)28 b(b)r(oth)g Fx(a;)14 b(a)1126 4305 y Fg(0)1172 4336 y Fz(2)24 b Fx(M)9 b FD(,)27 b(then)h Fx(I)7 b FD(\()p Fx(a)p FD(\))24 b(=)e Fu(true)q FD(;)616 4500 y(2.)41 b(If)28 b Fx(a)849 4470 y Fg(0)896 4500 y Fz(2)23 b Fx(M)36 b FD(and)28 b Fx(a)k(=)-51 b Fz(2)23 b Fx(M)9 b FD(,)27 b(then)h Fx(I)7 b FD(\()p Fx(a)p FD(\))24 b(=)f Fu(unkno)n(wn)n FD(;)k(and)616 4665 y(3.)41 b(Otherwise,)27 b Fx(I)7 b FD(\()p Fx(a)p FD(\))24 b(=)e Fu(false)p FD(.)515 4827 y(The)27 b(formal)g(pro)r(of)g(that)h(this)g(translation)e(w)n(orks)g (is)i(presen)n(ted)f(in)h([5)o(].)515 5006 y FC(Example)i(4.14)1905 5255 y FD(36)p eop %%Page: 37 41 37 40 bop 722 523 a FD(Consider)27 b(a)g(disjunctiv)n(e)h(program)e Fx(P)12 b FD(:)905 672 y FB(a)43 b(|)g(b)g(:-)g(not)g(c.)905 772 y(b)g(:-)g(not)f(b.)905 872 y(c)h(:-)g(not)f(c.)722 1005 y FD(The)28 b(translated)f(program)e(T)-7 b(r\()p Fx(P)12 b FD(\))28 b(is:)905 1154 y FB(a)43 b(|)g(b)g(:-)g(not)g(c'.) 905 1254 y(a')g(|)g(b')g(:-)f(not)h(c.)905 1353 y(b)g(:-)g(not)f(b'.) 905 1453 y(b')h(:-)f(not)h(b.)905 1553 y(c)g(:-)g(not)f(c'.)905 1652 y(c')h(:-)f(not)h(c.)905 1752 y(a')g(:-)f(a.)905 1851 y(b')h(:-)f(b.)905 1951 y(c')h(:-)f(c.)722 2084 y FD(The)26 b(only)g(stable)f(mo)r(del)i(of)e(T)-7 b(r\()p Fx(P)12 b FD(\))26 b(is)g Fz(f)p Fx(b)2049 2054 y Fg(0)2072 2084 y Fx(;)14 b(c)2145 2054 y Fg(0)2168 2084 y Fz(g)25 b FD(and)h(it)g(corresp)r(ond)f(to)h(the)g(partial)722 2183 y(in)n(terpretation)h(of)g Fx(P)40 b FD(where)27 b Fx(b)g FD(and)h Fx(c)f FD(are)g(b)r(oth)h Fu(unkno)n(wn)e FD(and)h Fx(a)h FD(is)f Fu(false)p FD(.)194 b Fi(\006)p 432 2316 4 17 v 432 2349 V 432 2382 V 432 2415 V 432 2449 V 432 2482 V 432 2515 V 432 2548 V 432 2582 V 432 2615 V 432 2648 V 432 2681 V 639 2357 a FD(Because)22 b(the)h(partial)f(mo)r(del)h(translation)f(in)n(tro)r(duces)g(a)h(dep)r (endency)g(lo)r(op)g(for)f(eac)n(h)515 2457 y(predicate,)27 b(it)h(is)f(not)h(done)f(for)g(domain)g(predicates.)37 b(Instead,)27 b(the)h(rule)722 2573 y FB(d'\(X\))42 b(:-)h(d\(X\).)639 2672 y FD(is)28 b(added)f(for)g(eac)n(h)g(domain)g(predicate)g Fx(d)p FD(.)639 2772 y(The)20 b(b)r(eha)n(vior)e(of)h(the)h(partial)e (mo)r(del)i(translation)e(can)h(b)r(e)h(altered)e(with)i(the)g FB(-r)f FD(com-)515 2872 y(mand)24 b(line)h(switc)n(h.)36 b(In)24 b(the)h(\014rst)f(alternativ)n(e)f(\()p FB(-r)49 b FD(1\))24 b(the)h(rules)f(of)g(the)h(form)f(\(4.19\))g(are)515 2971 y(left)32 b(out.)49 b(This)31 b(option)h(is)f(useful)h(when)g(one) f(w)n(an)n(ts)g(to)g(\014nd)h(all)f(p)r(ossible)h(\014xp)r(oin)n(ts)f (of)515 3071 y(the)d(program.)639 3171 y(The)g(second)f(alternativ)n(e) f(\()p FB(-r)h FD(3\))h(adds)f(constrain)n(ts)f(of)i(the)g(form)1827 3353 y Fx(a)23 b Fz( )g Fx(a)2044 3319 y Fg(0)3167 3353 y FD(\(4.20\))515 3536 y(for)30 b(all)h Fx(a)e Fz(2)g FC(HB)p FD(\()p Fx(P)12 b FD(\))31 b(to)g(the)h(program.)45 b(These)31 b(ensure)f(that)i(an)e(atom)h(is)g(true)g(alw)n(a)n(ys)515 3635 y(when)d(it)g(is)f(p)r(ossibly)g(true.)515 3910 y FA(4.9)135 b(Computational)47 b(Complexit)l(y)515 4092 y Fy(This)31 b(se)l(ction)f(wil)t(l)h(app)l(e)l(ar)g(her)l(e)f(when)g (I)g(have)h(time)f(to)f(write)i(it)p FD(.)1905 5255 y(37)p eop %%Page: 38 42 38 41 bop 515 1146 a Fw(Chapter)64 b(5)515 1561 y FE(Language)515 1993 y FD(This)27 b(c)n(hapter)g(describ)r(es)f(the)i Fv(Smodels)f FD(language.)35 b(Eac)n(h)26 b(di\013eren)n(t)i(language)d (feature)515 2092 y(has)i(its)h(o)n(wn)f(section)g(here.)515 2367 y FA(5.1)135 b(Commen)l(ts)515 2549 y FD(Y)-7 b(ou)28 b(can)g(ha)n(v)n(e)f(commen)n(ts)g(in)i Fv(Smodels)e FD(programs.)36 b(The)28 b(commen)n(t)g(c)n(haracter)e(is)i(`)p FB(\045)p FD('.)515 2648 y(A)g(commen)n(t)f(then)h(lasts)f(util)h(the)g (end)g(of)g(the)g(ro)n(w.)515 2923 y FA(5.2)135 b(T)-11 b(erms)515 3105 y FD(There)38 b(are)g(four)h(di\013eren)n(t)g(t)n(yp)r (es)g(of)g(terms:)59 b(constan)n(ts,)41 b(v)-5 b(ariables,)41 b(functions,)h(and)515 3204 y(ranges.)515 3387 y FC(Constan)m(t)751 3486 y FD(A)30 b(constan)n(t)e(is)g(either)h(a)g(sym)n(b)r(olic)f (constan)n(t)g(or)g(a)h(n)n(umeric)f(constan)n(t.)40 b(A)30 b(sym-)722 3586 y(b)r(olic)h(constan)n(t)f(is)h(a)f(string)g(of) h(letters)f(and)h(n)n(um)n(b)r(ers)f(whic)n(h)h(ma)n(y)f(also)g(con)n (tain)722 3686 y(underscores)18 b(\()p 1200 3686 27 4 v 31 w(\))i(starting)e(with)i(a)f(lo)n(w)n(er)f(case)g(letter,)j(or)e (a)f(sequence)h(of)g(c)n(haracters)722 3785 y(that)28 b(is)g(enclosed)f(within)h(double)f(quotes)g(\()p FB(")p FD(\).)p 432 3889 4 17 v 432 3922 V 432 3956 V 432 3989 V 432 4022 V 432 4055 V 432 4088 V 432 4122 V 432 4155 V 722 3956 a(The)k(quote)g(c)n(haracters)e(are)h(retained)h(in)g(the)g (quoted)g(strings)f(b)n(y)h(default,)i(ev)n(en)722 4055 y(if)e(unnecessary)-7 b(,)28 b(and)i FB(a)f FD(is)h(di\013eren)n(t)g (from)f FB("a")p FD(.)42 b(This)30 b(b)r(eha)n(vior)e(can)i(b)r(e)g (altered)722 4155 y(with)e(the)g FB(--drop-quotes)23 b FD(command)k(line)h(argumen)n(t.)722 4339 y(A)22 b(n)n(umeric)e (constan)n(t)h(is)g(an)f(in)n(teger.)34 b(Curren)n(tly)20 b(the)i(allo)n(w)n(ed)d(range)h(for)h(n)n(um)n(b)r(ers)722 4439 y(go)r(es)d(only)h(from)f Fz(\000)p FD(2)1364 4409 y Ft(30)1452 4439 y FD(to)h(2)1587 4409 y Ft(30)1657 4439 y FD(.)34 b(This)19 b(is)f(due)h(to)g(seriously)e(limited)j (implemen)n(tation)722 4539 y(of)28 b(constan)n(ts)e(and)i(will)g(b)r (e)g(remo)n(v)n(ed)e(in)i(some)f(later)g(release)f(\(see)h(Section)h (8\).)722 4671 y(Sample)g(constan)n(ts:)36 b FB(0,)43 b(1020,)e(cons)p 1986 4671 27 4 v 30 w(tant,)g("quoted)g(constant")p FD(.)722 4804 y(It)27 b(is)g(also)f(p)r(ossible)h(to)f(de\014ne)h(a)g (sym)n(b)r(olic)f(constan)n(t)g(to)h(act)g(as)f(an)g(n)n(umeric)h(con-) 722 4904 y(stan)n(t)k(b)n(y)h(adding)f(a)g(constan)n(t)f(declaration)g (\(see)i(Section)f(5.5\).)48 b(If)32 b(y)n(ou)e(add)i(the)1905 5255 y(38)p eop %%Page: 39 43 39 42 bop 722 523 a FD(line)26 b FB(const)41 b Fm(foo)57 b FB(=)43 b Fm(number)37 b FD(to)25 b(y)n(our)f(program,)g(from)h(that) g(p)r(oin)n(t)h(on)f(ev)n(ery)f(o)r(c-)722 623 y(currence)f(of)h(the)h (constan)n(t)e Fy(fo)l(o)30 b FD(will)25 b(b)r(e)f(substituted)h(b)n(y) f Fy(numb)l(er)9 b FD(.)35 b(Alternativ)n(ely)-7 b(,)722 722 y(y)n(ou)27 b(can)g(use)h(the)g FB(-c)f FD(command)g(line)h (option.)722 855 y(In)i(general,)e(y)n(ou)g(ma)n(y)g(use)h(an)g (expression)f(that)h(ev)-5 b(aluates)28 b(to)h(a)g(constan)n(t)f(v)-5 b(alue)722 955 y(ev)n(erywhere)33 b(where)i(y)n(ou)f(can)g(use)h (constan)n(ts,)h(that)f(is,)h(it)g(is)e(legal)g(to)h(use)g(con-)722 1054 y(structs)28 b(lik)n(e:)722 1187 y FB(const)42 b(double)f(=)i(2)g (*)g(foo.)515 1353 y FC(V)-8 b(ariable)754 1453 y FD(A)32 b(v)-5 b(ariable)30 b(is)h(a)h(string)e(of)i(letters)f(and)g(n)n(um)n (b)r(ers)g(that)h(ma)n(y)f(also)f(con)n(tain)h(un-)722 1553 y(derscores)p 1084 1553 27 4 v 85 w(starting)c(with)h(an)f(upp)r (er)h(case)f(letter)722 1685 y(Sample)h(v)-5 b(ariables:)35 b FB(X,)43 b(Time)p 1701 1685 V 30 w(1)p FD(.)515 1851 y FC(F)-8 b(unction)751 1951 y FD(A)28 b(function)h(is)f(either)g(a)g (function)g(sym)n(b)r(ol)g(follo)n(w)n(ed)f(b)n(y)h(a)g(paren)n (thesised)f(argu-)722 2051 y(men)n(t)i(list)f(or)g(an)g(builtin)h (arithmetical)f(expression.)37 b(A)29 b(function)g(ma)n(y)e(b)r(e)i (either)722 2150 y(a)c(n)n(umerical)f(function)i(that)f(is)g(actually)g (used)g(to)g(compute)g(something)g(or)f(it)h(is)g(a)722 2250 y(sym)n(b)r(olic)k(function)g(of)g(the)h(form)e FB(foo\(a\))p FD(,)f(whic)n(h)i(basically)f(just)h(de\014nes)g(a)g(new) 722 2350 y(constan)n(t)e(that)h(gets)f(the)h(name)g FB(foo\(a\))p FD(.)722 2482 y(A)36 b(n)n(umerical)f(function)h(ma)n(y)e(b)r(e)i (either)f(built-in)h(in)n(ternal)f(function)h(or)f(a)g(user)722 2582 y(sp)r(eci\014ed)41 b(C)f(or)f(C++)g(function)h(that)h(is)e(link)n (ed)h(to)g(lparse)f(dynamically)g(\(see)722 2682 y(Section)28 b(5.7.3\).)722 2814 y(The)33 b(in)n(ternal)g(comparison)e(functions)i (\()p FB(eq)p FD(,)h FB(neq)p FD(,)f FB(lt)p FD(,)h FB(le)p FD(,)f FB(gt)p FD(,)h(and)f FB(ge)p FD(\))f(can)h(b)r(e)722 2914 y(used)g(with)h(b)r(oth)g(n)n(umeric)f(and)g(sym)n(b)r(olic)f (constan)n(ts)g(but)i(the)g(rest)f(of)g(in)n(ternal)722 3014 y(functions)28 b(allo)n(w)f(only)g(n)n(umeric)g(argumen)n(ts.)722 3147 y(The)h(use)f(of)h(functions)g(is)f(explained)h(more)e(fully)j(in) e(Section)h(5.7.)722 3279 y(Sample)g(functions:)37 b FB(X+1,)42 b(times\(X,)e(5,)j(plus\(Y,)e(1\)\))p FD(.)515 3445 y FC(Range)750 3545 y FD(A)28 b(range)e(is)i(of)f(the)h(form:)905 3694 y Fm(start)56 b FB(..)86 b Fm(end)722 3827 y FD(where)27 b Fy(start)36 b FD(and)27 b Fy(end)37 b FD(are)26 b(constan)n(t)h(v)-5 b(alued)28 b(arithmetic)f(expressions.)35 b(A)28 b(range)722 3927 y(is)22 b(a)g(notational)f(shortcut)g(that)i(is)e(mainly)h(used)g (to)g(de\014ne)g(n)n(umerical)f(domains)h(in)722 4027 y(a)27 b(compact)g(w)n(a)n(y)-7 b(.)35 b(A)28 b(range)d(is)i(expanded)g (b)n(y)g(de\014ning)g(a)g(new)g(domain)g(predicate)722 4126 y(and)k(adding)f(all)g(elemen)n(ts)h(of)g(the)g(range)e(to)h(its)h (extension.)46 b(The)31 b(range)e(is)i(then)722 4226 y(replaced)20 b(b)n(y)f(a)h(v)-5 b(ariable)19 b(that)i(gets)e(its)i (domain)e(from)h(the)h(new)f(domain)g(predicate.)722 4359 y(F)-7 b(or)27 b(example,)h(a)f(fact)g FB(a\(1..3\).)34 b FD(is)27 b(a)h(shortcut)f(for)905 4508 y FB(a\(X\))42 b(:-)h(int1\(X\).)905 4608 y(int1\(1\).)905 4707 y(int1\(2\).)905 4807 y(int1\(3\).)722 4940 y FD(Ranges)27 b(can)g(also)g(b)r(e)h(used)f (in)h(rule)f(b)r(o)r(dies)h(with)g(the)g(same)f(seman)n(tics.)1905 5255 y(39)p eop %%Page: 40 44 40 43 bop 905 523 a FB(b)43 b(:-)g(a\(1..3\).)722 656 y FD(expands)27 b(to)905 805 y FB(b)43 b(:-)g(a\(X\),)e(int1\(X\).)905 905 y(int1\(1\).)905 1005 y(int1\(2\).)905 1104 y(int1\(3\).)722 1237 y FD(No)n(w)29 b FB(b)e FD(is)g(true)h(if)g(an)n(y)f(of)34 b FB(a\(1\))p FD(,)26 b FB(a\(2\))p FD(,)g(or)h FB(a\(3\))f FD(is)h(true.)515 1512 y FA(5.3)135 b(A)l(toms)45 b(and)g(Literals)515 1693 y FD(Starting)30 b(from)h(v)n(ersion)f(2.0)g FB(smodels)f FD(has)h(o\013ered)h(supp)r(ort)g(for)g(three)g(extended)g(rule)515 1793 y(t)n(yp)r(es:)k(c)n(hoice,)25 b(constrain)n(t,)f(and)h(w)n(eigh)n (t.)36 b FB(Lparse)22 b FD(further)j(enhances)f(this)i(b)n(y)e(allo)n (wing)515 1893 y(a)i(rule)g(ha)n(v)n(e)g(an)g(arbitary)f(n)n(um)n(b)r (er)h(of)h(constrain)n(t)e(and)i(w)n(eigh)n(t)f(literals)f(in)i(a)f (rule)h(b)r(o)r(dy)-7 b(.)515 1992 y(Constrain)n(t)36 b(and)i(w)n(eigh)n(t)f(literals)g(are)g(b)r(oth)h(called)g(extended)g (literals.)66 b(In)38 b(addition)515 2092 y(to)i(basic)g(and)h (extended)f(literals,)j FB(lparse)c FD(has)h(one)g(further)g(literal)g (t)n(yp)r(e,)k(namely)-7 b(,)515 2192 y(conditional)27 b(literal.)515 2374 y FC(A)m(tom)749 2474 y FD(An)f(atom)g(is)g(a)g (predicate)g(sym)n(b)r(ol)f(that)i(is)f(optionally)f(follo)n(w)n(ed)g (b)n(y)h(a)g(paren)n(the-)722 2573 y(sized)i(list)g(of)f(terms.)722 2706 y(Sample)h(atoms:)36 b FB(foo\(X\),)41 b(a,)i(foo)p FD(.)722 2839 y(It)25 b(is)e(p)r(ossible)h(to)g(giv)n(e)f(m)n(ultiple)i (argumen)n(t)d(lists)i(to)g(an)g(atom.)35 b(These)24 b(constructs)722 2939 y(are)j(of)g(the)h(form:)905 3088 y FB(a\()p Fm(arguments)1389 3100 y Ft(1)1422 3088 y FB(;)43 b Fm(arguments)1905 3100 y Ft(2)1938 3088 y FB(;)g Fz(\001)14 b(\001)g(\001)g FB(;)43 b Fm(arguments)2619 3100 y Fk(n)2661 3088 y FB(\))722 3221 y FD(When)34 b(m)n(ultiple)g (argumen)n(t)f(lists)g(app)r(ear)g(in)g(a)h(rule)f(b)r(o)r(dy)g(or)g (in)h(a)f(c)n(hoice)f(rule)722 3321 y(head)23 b(\(see)f(Section)h(5.4)f (on)g(page)g(43\),)h(a)g(new)g(literal)f(is)g(constructed)h(for)f(eac)n (h)g(list.)722 3420 y(That)28 b(is,)f(a)h(rule)905 3570 y Fz(f)43 b FB(a\(X;Y+1\))d Fz(g)j FB(:-)g(d\(X;Y\).)722 3703 y FD(is)28 b(expanded)f(to)905 3852 y Fz(f)43 b FB(a\(X\),)f(a\(Y+1\))f Fz(g)i FB(:-)g(d\(X\),)e(d\(Y\).)722 3985 y FD(In)33 b(a)g(basic)f(rule)h(head)g(a)f(new)h(rule)g(is)g (constructed)f(for)h(eac)n(h)f(argumen)n(t)g(list)h(so)722 4084 y(that)905 4234 y FB(foo\(a)41 b(;)j(b;)e(c\).)722 4367 y FD(b)r(ecomes)905 4516 y FB(foo\(a\).)905 4616 y(foo\(b\).)905 4715 y(foo\(c\).)515 4881 y FC(Basic)32 b(literal)750 4981 y FD(A)c(basic)f(literal)g(is)g(either)h(an)f(atom)g Fx(a)h FD(or)f(its)g(negation)g(not)h Fx(a)p FD(.)1905 5255 y(40)p eop %%Page: 41 45 41 44 bop 722 523 a FD(Beginning)30 b(with)h FB(lparse)p FD(-0.99.57)25 b(y)n(ou)30 b(ha)n(v)n(e)f(b)r(een)i(able)g(to)f(use)g (classical)f(nega-)722 623 y(tions)36 b(in)h(y)n(our)e(programs.)60 b(The)36 b(classical)f(negation)g Fz(:)p Fx(a)h FD(of)h(an)e(atom)h Fx(a)g FD(is)g(de-)722 722 y(noted)i(b)n(y)f(a)g(min)n(us)g(sign)g (that)h(is)f(immedietely)h(b)r(efore)g(the)f(atom)g(name:)57 b FB(-a)p FD(.)722 822 y(The)33 b(classical)e(negation)h(extension)g (is)h(enabled)g(b)n(y)f(the)h(command)f(line)h(option)722 922 y FB(--true-negation)p FD(.)722 1054 y(Sample)28 b(literals:)36 b FB(a\(X\),)41 b(not)i(b\(X\))p FD(.)515 1219 y FC(Constrain)m(t)32 b(literal)750 1318 y FD(A)c(constrain)n(t)e (literal)h(is)h(of)f(the)h(form)905 1466 y Fm(lower)56 b Fz(f)43 b FB(l)p 1315 1466 27 4 v 31 w(1,)g(l)p 1521 1466 V 31 w(2,)f Fx(:)14 b(:)g(:)28 b FB(,)43 b(l)p 1938 1466 V 31 w(n)g Fz(g)g Fm(upper)722 1598 y FD(where)24 b Fy(lower)35 b FD(and)25 b Fy(upp)l(er)34 b FD(are)24 b(arithmetic)g(expressions)f(and)i Fx(l)2724 1610 y Ft(1)2761 1598 y FD(,)g Fx(:)14 b(:)g(:)g FD(,)25 b Fx(l)2993 1610 y Fk(n)3063 1598 y FD(are)f(basic)722 1698 y(or)j(conditional)g (literals.)722 1830 y(A)38 b(constrain)n(t)e(literal)g(is)h (satis\014ed)g(if)g(the)h(n)n(um)n(b)r(er)e(of)h(satis\014ed)g (literals)f(in)i(the)722 1930 y(b)r(o)r(dy)i(of)g(the)g(constrain)n(t)f (is)g(b)r(et)n(w)n(een)h Fy(lower)50 b FD(and)39 b Fy(upp)l(er)49 b FD(\(inclusiv)n(e\).)74 b(If)40 b(the)722 2029 y(lo)n(w)n(er)32 b(b)r(ound)h(is)g(missing,)h(zero)e(is)h(substituted)h(in)f(its)g (place)g(and)g(if)g(the)h(upp)r(er)722 2129 y(b)r(ound)28 b(is)g(missing,)f(an)n(y)g(n)n(um)n(b)r(er)g(of)h(literals)e(ma)n(y)h (b)r(e)h(true.)722 2261 y(It)42 b(is)f(p)r(ossible)g(to)g(ha)n(v)n(e)f (v)-5 b(ariables)40 b(in)h(the)h(rule)f(b)r(ounds.)78 b(F)-7 b(or)40 b(example,)45 b(the)722 2361 y(follo)n(wing)27 b(rule)g(could)g(b)r(e)h(used)g(to)g(coun)n(t)f(the)h(length)g(of)f(a)g (path)h(in)g(a)f(graph:)905 2509 y FB(length\(N\))40 b(:-)j(N)g Fz(f)g FB(in)p 1737 2509 V 30 w(path\(X,Y\))d(:)j (edge\(X,Y\))d Fz(g)j FB(N,)1472 2608 y(possible)p 1829 2608 V 28 w(length\(I\).)722 2741 y FD(During)26 b(grounding)g(a)f (constrain)n(t)h(literal)g(is)g(replaced)f(b)n(y)h(t)n(w)n(o)g(basic)g (literals)f(and)722 2840 y(t)n(w)n(o)i(new)h(rules)f(are)f(added)i(to)f (the)h(program.)35 b(F)-7 b(or)27 b(example,)g(a)h(rule:)905 2988 y FB(h\(a\))42 b(:-)h(2)g Fz(f)g FB(d)p 1475 2988 V 31 w(1\(a\),)e(d)p 1811 2988 V 31 w(2\(a\),)h(d)p 2148 2988 V 31 w(3\(a\),)f(d)p 2484 2988 V 31 w(4\(a\))h Fz(g)h FB(3)722 3120 y FD(is)28 b(transformed)e(to)905 3268 y FB(h\(a\))42 b(:-)h(int1\(a\),)d(not)i(int2\(a\).)905 3368 y(int1\(a\))f(:-)h(2)i Fz(f)f FB(d1\(a\),)e(d2\(a\),)g(d3\(a\),)g (d4\(a\))g Fz(g)p FB(.)905 3467 y(int2\(a\))g(:-)h(4)i Fz(f)f FB(d1\(a\),)e(d2\(a\),)g(d3\(a\),)g(d4\(a\))g Fz(g)p FB(.)722 3599 y FD(Here)c Fx(int)1037 3611 y Ft(1)1112 3599 y FD(and)g Fx(int)1392 3611 y Ft(2)1466 3599 y FD(are)g(new)g(in)n (ternal)g(predicates.)66 b(The)37 b(transformation)f(is)722 3699 y(done)28 b(b)r(ecause)f FB(smodels)e FD(allo)n(ws)h(only)i(one)f (constrain)n(t)g(p)r(er)g(rule)h(and)f(only)h(lo)n(w)n(er)722 3799 y(b)r(ounds)g(are)f(examined.)515 3964 y FC(W)-8 b(eigh)m(t)31 b(literal)750 4063 y FD(A)d(w)n(eigh)n(t)f(literal)g(is)g (of)h(the)g(form)905 4211 y Fm(lower)56 b FB([)43 b(l)p 1317 4211 V 31 w(1=w)p 1480 4211 V 30 w(1,)g Fx(:)14 b(:)g(:)g FB(,)43 b(l)p 1883 4211 V 31 w(n=w)p 2046 4211 V 30 w(n)g(])g Fm(upper)722 4343 y FD(A)33 b(w)n(eigh)n(t)g(literal)f (b)r(eha)n(v)n(es)f(otherwise)h(just)i(lik)n(e)e(a)h(constrain)n(t)e (literal)h(but)i(eac)n(h)722 4443 y(literal)27 b(ma)n(y)g(b)r(e)h(giv)n (en)f(a)g(di\013eren)n(t)h(in)n(tegral)e(w)n(eigh)n(t.)722 4575 y(The)21 b(w)n(eigh)n(t)e(literal)h(is)g(satis\014ed)g(if)g(the)h (sum)f(of)h(the)f(w)n(eigh)n(ts)f(of)i(satis\014ed)e(literals)h(in)722 4675 y(the)28 b(rule)g(b)r(o)r(dy)g(is)g(b)r(et)n(w)n(een)g Fy(lower)37 b FD(and)28 b Fy(upp)l(er)37 b FD(\(inclusiv)n(e\).)h(If)28 b(the)g(lo)n(w)n(er)f(b)r(ound)722 4774 y(is)h(missing,)f Fz(\0001)g FD(is)h(substituted.)722 4907 y(The)e(w)n(eigh)n(ts)e Fx(w)1243 4919 y Ft(1)1281 4907 y FD(,)h Fx(:)14 b(:)g(:)28 b FD(,)e Fx(w)1562 4919 y Fk(n)1633 4907 y FD(ma)n(y)f(b)r(e)g(an)n(y)g (expressions.)34 b(If)26 b(there)f(are)g(v)-5 b(ariables)24 b(in)722 5006 y(w)n(eigh)n(t)j(expressions,)f(they)i(m)n(ust)g(b)r(e)g (domain)f(restricted.)1905 5255 y(41)p eop %%Page: 42 46 42 45 bop 722 523 a FD(The)40 b(w)n(eigh)n(ts)e(ma)n(y)h(b)r(e)h(giv)n (en)f(in)h(the)g(w)n(eigh)n(t)f(literal)g(b)r(o)r(dy)-7 b(,)42 b(or)d(they)h(ma)n(y)f(b)r(e)722 623 y(de\014ned)e(earlier)e(b)n (y)h(global)f(w)n(eigh)n(t)h(declarations.)62 b(The)36 b(lo)r(cal)g(v)-5 b(alues)36 b(o)n(v)n(erride)722 722 y(the)29 b(global)f(v)-5 b(alues.)39 b(If)29 b(there)g(is)f(neither)h (a)f(global)g(or)f(a)i(lo)r(cal)f(v)-5 b(alue,)29 b(the)g(default)722 822 y(v)-5 b(alue)32 b(is)f(used.)49 b(The)31 b(default)h(is)g (normally)e(1)h(but)h(y)n(ou)f(can)g(c)n(hange)g(it)h(with)g(the)722 922 y(command)c(line)f(argumen)n(t)g FB(-w)g FD(\(see)g(Section)h (3.1\).)722 1054 y(Negativ)n(e)35 b(w)n(eigh)n(ts)g(are)g(handled)i(b)n (y)e(in)n(v)n(erting)g(the)i(literal)e(\()p Fx(a)h FD(b)r(ecomes)g(not) g Fx(a)722 1154 y FD(and)e(not)g Fx(a)g FD(b)r(ecomes)f Fx(a)p FD(\),)j(c)n(hanging)c(the)i(sign)g(of)g(the)g(w)n(eigh)n(t,)h (and)e(adding)h(the)722 1254 y(absolute)27 b(v)-5 b(alue)28 b(of)f(the)h(w)n(eigh)n(t)f(to)h(the)g(b)r(ounds.)722 1386 y(F)-7 b(or)27 b(example,)905 1536 y Fm(lower)56 b FB([)43 b(a)p 1317 1536 27 4 v 31 w(1=-w)p 1524 1536 V 30 w(1,)f(not)h(a)p 1903 1536 V 31 w(2=-w)p 2110 1536 V 30 w(2)g(])722 1669 y FD(b)r(ecomes)905 1818 y Fm(lower)12 b FB(+w)p 1230 1818 V 31 w(1+w)p 1393 1818 V 30 w(2)43 b([)g(not)g(a)p 1816 1818 V 31 w(1=w)p 1979 1818 V 30 w(1,)g(a)p 2184 1818 V 31 w(2=w)p 2347 1818 V 30 w(2)g(].)515 1984 y FC(Conditional)30 b(literal)750 2084 y FD(A)e(conditional)f (literal)g(is)g(of)h(the)g(form:)905 2233 y FB(p\(X\))42 b(:)h(q\(X\))722 2366 y FD(where)26 b Fx(p)p FD(\()p Fx(X)7 b FD(\))25 b(is)h(an)n(y)f(basic)g(literal)g(and)h Fx(q)s FD(\()p Fx(X)7 b FD(\))25 b(is)h(a)f(domain)h(predicate.)35 b(If)26 b(the)h(ex-)722 2466 y(tension)20 b(of)f Fx(q)k FD(is)d Fz(f)p Fx(q)s FD(\()p Fx(a)1381 2478 y Ft(1)1418 2466 y FD(\))p Fx(;)14 b(q)s FD(\()p Fx(a)1603 2478 y Ft(2)1640 2466 y FD(\))p Fx(;)g(:)g(:)g(:)g(;)g(q)s FD(\()p Fx(a)1973 2478 y Fk(n)2019 2466 y FD(\))p Fz(g)p FD(,)21 b(the)f(ab)r(o)n(v)n(e)e(condition)i(is)f(seman)n(tically)722 2565 y(equiv)-5 b(alen)n(t)28 b(to)f(writing)g Fx(p)p FD(\()p Fx(a)1622 2577 y Ft(1)1660 2565 y FD(\),)h Fx(p)p FD(\()p Fx(a)1861 2577 y Ft(2)1898 2565 y FD(\),)g Fx(:)14 b(:)g(:)f FD(,)28 b Fx(p)p FD(\()p Fx(a)2260 2577 y Fk(n)2305 2565 y FD(\))g(in)g(the)g(place)f(of)h(condition.)722 2698 y(F)-7 b(or)27 b(example,)905 2848 y FB(q\(1..2\).)905 2947 y(a)43 b(:-)g(1)g Fz(f)g FB(p\(X\):q\(X\))d Fz(g)p FB(.)722 3080 y FD(will)28 b(b)r(e)g(grounded)f(to)g(giv)n(e)905 3230 y FB(q\(1\).)85 b(q\(2\).)905 3329 y(a)43 b(:-)g(1)g Fz(f)g FB(p\(1\),)f(p\(2\))g Fz(g)p FB(.)722 3462 y FD(Seman)n(tically) 35 b(the)g(expansion)f(of)h(conditions)g(tak)n(es)f(place)g(after)h (the)g(v)-5 b(ariables)722 3562 y(that)30 b(o)r(ccur)f(also)f(in)h (another)g(part)g(of)g(the)h(rule)f(are)f(instan)n(tiated.)42 b(F)-7 b(or)28 b(example)722 3661 y(in)g(the)g(program)905 3811 y FB(d\(1..2\).)905 3910 y(a\(X\))42 b(:-)h(1)g Fz(f)g FB(p\(X,Y\))e(:)i(d\(Y\))f Fz(g)p FB(,)h(d\(X\).)722 4043 y FD(the)28 b(v)-5 b(ariable)27 b Fx(X)34 b FD(will)28 b(b)r(e)g(\014rst)f(instan)n(tiated)g(to)h(giv)n(e)e(the)i(program)905 4193 y FB(d\(1\).)85 b(d\(2\).)905 4292 y(a\(1\))42 b(:-)h(1)g Fz(f)g FB(p\(1,)f(Y\))h(:)g(d\(Y\))f Fz(g)p FB(,)g(d\(1\).)905 4392 y(a\(2\))g(:-)h(1)g Fz(f)g FB(p\(2,)f(Y\))h(:)g(d\(Y\))f Fz(g)p FB(,)g(d\(2\).)722 4525 y FD(In)28 b(the)g(next)g(step)g(the)g (conditions)f(are)f(expanded)i(to)f(giv)n(e)905 4674 y FB(d\(1\).)85 b(d\(2\).)905 4774 y(a\(1\))42 b(:-)h(1)g Fz(f)g FB(p\(1,)f(1\),)g(p\(1,)g(2\))h Fz(g)p FB(,)g(d\(1\).)905 4873 y(a\(2\))f(:-)h(1)g Fz(f)g FB(p\(2,)f(1\),)g(p\(2,)g(2\))h Fz(g)p FB(,)g(d\(2\).)1905 5255 y FD(42)p eop %%Page: 43 47 43 46 bop 722 523 a FD(In)31 b(practice,)g(the)g(conditions)f(are)f (expanded)h(as)g(early)g(as)g(p)r(ossible)g(and)g(if)h(none)722 623 y(of)25 b(the)g(v)-5 b(ariables)24 b(in)h(a)f(condition)h(o)r(ccur) f(in)h(other)f(parts)g(of)h(a)f(rule,)h(the)g(condition)722 722 y(will)j(b)r(e)g(expanded)f(b)r(efore)h(an)n(ything)f(else)g(is)g (done.)722 855 y(It)i(is)f(also)f(p)r(ossible)h(add)f(man)n(y)h (conditions)g(to)g(one)f(literal.)38 b(F)-7 b(or)28 b(example)f(in)i (the)722 955 y(conditional)e(literal:)905 1104 y FB(p\(X,Y\))41 b(:)i(q)p 1346 1104 27 4 v 31 w(1\(X\))f(:)h(q)p 1726 1104 V 31 w(2\(Y\))722 1237 y FD(domain)27 b(predicate)g Fx(q)1414 1249 y Ft(1)1479 1237 y FD(giv)n(es)g(v)-5 b(alues)27 b(to)h Fx(X)34 b FD(and)27 b Fx(q)2333 1249 y Ft(2)2398 1237 y FD(giv)n(es)f(v)-5 b(alues)28 b(to)f Fx(Y)19 b FD(.)515 1512 y FA(5.4)135 b(Rule)46 b(T)l(yp)t(es)515 1693 y FD(The)37 b(v)n(ersion)e(2.0)h(of)44 b FB(smodels)34 b FD(added)j(supp)r(ort)f(for)h(three)g(new)g(rule)f(t)n(yp)r(es:)56 b(c)n(hoice,)515 1793 y(constrain)n(t,)39 b(and)e(w)n(eigh)n(t)h (rules.)66 b(In)38 b FB(lparse)e FD(the)i(constrain)n(t)e(and)i(w)n (eigh)n(t)f(rules)g(are)515 1893 y(handled)27 b(b)n(y)g(more)g(general) f(constrain)n(t)g(and)h(w)n(eigh)n(t)g(literals)g(that)g(w)n(ere)g(in)n (tro)r(duced)g(in)515 1992 y(the)h(section)f(ab)r(o)n(v)n(e.)515 2175 y FC(Basic)32 b(rule)750 2275 y FD(A)c(basic)f(rule)g(is)h(of)f (the)h(form:)905 2424 y FB(h\(X\))42 b(:-)h(a)p 1303 2424 V 31 w(1\(X\),)e Fx(:)14 b(:)g(:)g FB(,)43 b(a)p 1837 2424 V 31 w(n\(X\),)e(not)i(b)p 2348 2424 V 31 w(1\(X\),)e Fx(:)14 b(:)g(:)g FB(,)43 b(not)g(b)p 3057 2424 V 30 w(m\(X\).)722 2557 y FD(If)26 b Fx(a)847 2569 y Ft(1)885 2557 y FD(\()p Fx(X)7 b FD(\),)26 b Fx(:)14 b(:)g(:)f FD(,)27 b Fx(a)1278 2569 y Fk(n)1323 2557 y FD(\()p Fx(X)7 b FD(\))26 b(are)e(in)i(a)g(stable)f(mo)r(del)h(and)g Fx(b)2467 2569 y Ft(1)2504 2557 y FD(\()p Fx(X)7 b FD(\),)26 b Fx(:)14 b(:)g(:)f FD(,)27 b Fx(b)2889 2569 y Fk(n)2934 2557 y FD(\()p Fx(X)7 b FD(\))25 b(are)g(not,)722 2656 y(the)j(head)g(atom)f Fx(h)p FD(\()p Fx(X)7 b FD(\))27 b(is)h(put)g(also)e(in)i(the)g(mo)r(del.)722 2789 y(If)34 b(the)g(rule)f(has)g(no)g(head,)h(all)f(mo)r(del)h(candidates)e(that)i (satisfy)f(the)h(rule)f(b)r(o)r(dy)722 2889 y(are)27 b(discarded.)515 3055 y FC(Choice)k(rule)750 3155 y FD(A)d(c)n(hoice)f (rule)g(has)g(one)g(of)h(the)g(follo)n(wing)e(t)n(w)n(o)h(forms:)905 3304 y Fm(lower)56 b Fz(f)43 b FB(h)p 1315 3304 V 31 w(1,)g Fx(:)14 b(:)g(:)f FB(,)44 b(h)p 1719 3304 V 31 w(n)f Fz(g)g Fm(upper)56 b FB(:-)42 b Fm(body)13 b FB(.)905 3404 y Fm(lower)56 b FB([)43 b(h)p 1317 3404 V 31 w(1=w)p 1480 3404 V 30 w(1,)g Fx(:)14 b(:)g(:)g FB(,)43 b(h)p 1883 3404 V 31 w(n=w)p 2046 3404 V 30 w(n)g(])g Fm(upper)56 b FB(:-)43 b Fm(body)13 b FB(.)722 3537 y FD(If)35 b(the)g Fy(b)l(o)l(dy)43 b FD(of)34 b(a)h(c)n(hoice)e(rule)h(is)h(satis\014ed,) h(the)f(n)n(um)n(b)r(er)f(\(or)g(total)g(w)n(eigh)n(t\))g(of)722 3636 y Fx(h)770 3648 y Ft(1)807 3636 y FD(,)f Fx(:)14 b(:)g(:)g FD(,)32 b Fx(h)1077 3648 y Fk(n)1154 3636 y FD(that)g(are)e Fu(true)i FD(in)g(the)g(mo)r(del)g(will)f(b)r(e)h(b)r (et)n(w)n(een)g Fy(lower)41 b FD(and)32 b Fy(upp)l(er)9 b FD(,)722 3736 y(inclusiv)n(e.)722 3869 y(If)29 b(b)r(oth)g(b)r(ounds) f(are)g(missing,)g(an)n(y)f(n)n(um)n(b)r(er)h(of)h(head)f(literals)f (ma)n(y)h(b)r(e)h(included)722 3968 y(in)d(a)g(mo)r(del.)36 b(It)27 b(is)e(then)i(said)e(that)h(the)h Fy(b)l(o)l(dy)34 b FD(giv)n(es)24 b(the)j(head)e(atoms)g(a)h(reason)e(to)722 4068 y(b)r(e)k(in)g(a)f(mo)r(del,)h(but)g(it)g(do)r(esn't)g(force)f (them)h(to)g(b)r(e)g(in)f(it.)722 4201 y(F)-7 b(or)27 b(example,)h(the)f(program)905 4350 y FB(1)43 b Fz(f)g FB(a,)g(b)g Fz(g)g FB(.)722 4483 y FD(has)27 b(three)h(stable)f(mo)r (dels,)h Fx(M)1707 4495 y Ft(1)1766 4483 y FD(=)23 b Fz(f)p Fx(a)p Fz(g)p FD(,)k Fx(M)2113 4495 y Ft(2)2173 4483 y FD(=)22 b Fz(f)p Fx(b)p Fz(g)p FD(,)27 b(and)g Fx(M)2672 4495 y Ft(3)2732 4483 y FD(=)c Fz(f)p Fx(a;)14 b(b)p Fz(g)p FD(.)p 432 4781 4 183 v 722 4682 a(It)28 b(is)e(also)g(p)r(ossible)h(to)g(use)f(a)h(w)n(eigh)n(t)f(literal)g(as) h(a)f(head.)37 b(In)27 b(that)g(case,)f(the)h(total)722 4782 y(w)n(eigh)n(t)g(of)h(the)g(satis\014ed)f(literals)g(in)h(it)g (has)f(to)g(b)r(e)h(b)r(et)n(w)n(een)g(the)g(b)r(ounds.)722 4997 y(There)f(exists)h(also)e(a)h(sp)r(ecial)h(notation)1905 5255 y(43)p eop %%Page: 44 48 44 47 bop 905 523 a FB(h)p 954 523 27 4 v 31 w(1)43 b(|)g Fx(:)14 b(:)g(:)58 b FB(|)43 b(h)p 1445 523 V 31 w(n)g(:-)g Fm(body)12 b FB(.)722 656 y FD(that)28 b(is)g(a)f(shorthand)g(for)905 805 y FB(1)43 b Fz(f)g FB(h)p 1126 805 V 31 w(1,)g Fx(:)14 b(:)g(:)g FB(,)43 b(h)p 1530 805 V 31 w(n)g Fz(g)g FB(1)g(:-)g Fm(body)13 b FB(.)722 938 y FD(That)28 b(is,)f(using)h FB(|)p FD(-notation)e(y)n(ou)h(ge)f(an)h(exclusiv)n(e)g(or)f(of)h(the)h (head)f(atoms.)36 b(Also,)722 1038 y(the)27 b(notation)g(is)f(used)h (with)g(disjunctiv)n(e)g(seman)n(tics)f(that)h(are)f(explained)g(in)h (Sec-)722 1137 y(tion)h(4.8.1.)722 1270 y(In)n(ternally)-7 b(,)23 b(a)g(c)n(hoice)e(rule)i(with)g(non-zero)e(b)r(ounds)i(will)g(b) r(e)g(translated)f(in)n(to)g(three)722 1370 y(rules:)905 1519 y Fz(f)43 b FB(h)p 1039 1519 V 31 w(1,)g Fx(:)14 b(:)g(:)f FB(,)44 b(h)p 1443 1519 V 31 w(n)f Fz(g)g FB(:-)g Fm(body)12 b FB(.)905 1619 y(:-)43 b Fm(upper)30 b FD(+)19 b(1)43 b Fz(f)g FB(h)p 1589 1619 V 31 w(1,)f Fx(:)14 b(:)g(:)g FB(,)43 b(h)p 1992 1619 V 31 w(n)g Fz(g)p FB(,)g Fm(body)13 b FB(.)905 1719 y(:-)43 b Fm(n)32 b Fz(\000)18 b Fm(lower)31 b FD(+)18 b(1)43 b Fz(f)g FB(not)g(h)p 1923 1719 V 30 w(1,)g Fx(:)14 b(:)g(:)g FB(,)43 b(not)f(h)p 2500 1719 V 31 w(n)i Fz(g)p FB(,)e Fm(body)13 b FB(.)722 1851 y FD(This)41 b(transformation)e(is)i(done)f(b)r(ecause)h FB(smodels)c FD(do)r(esn't)k(allo)n(w)f(b)r(ounds)h(in)722 1951 y(c)n(hoice)27 b(rules.)515 2226 y FA(5.5)135 b(Declarations)515 2407 y FD(There)35 b(are)g(eigh)n(t)g(kinds)h(of)f(declarations)f(in)i (the)h(language:)51 b(constan)n(t,)37 b(domain,)h(ex-)515 2507 y(ternal,)31 b(hide,)h(function,)g(option,)g(sho)n(w)e(and)h(w)n (eigh)n(t)f(declarations.)45 b(The)31 b(declarations)515 2607 y(ma)n(y)e(o)r(ccur)h(an)n(ywhere)f(in)h(the)h(source)e(co)r(de.) 44 b(The)30 b(only)g(restriction)f(is)h(that)h(y)n(ou)e(ha)n(v)n(e)515 2706 y(to)e(declare)g(a)g(constan)n(t)g(or)g(a)g(function)h(b)r(efore)f (y)n(ou)g(use)g(it.)p 432 3029 4 274 v 639 2813 a(All)k(declarations)e (start)g(with)i(a)f(`#')g(sym)n(b)r(ol.)45 b(The)30 b(old)g(practice)f (of)i(writing)f(them)515 2913 y(without)h(it)h(is)f(still)g(supp)r (orted)g(but)h(it)f(is)g(recommended)g(to)g(exclusiv)n(ely)f(use)h(the) g(new)515 3013 y(con)n(v)n(en)n(tion)26 b(since)h(some)g(future)h(v)n (ersion)e(will)i(drop)f(the)h(supp)r(ort.)515 3195 y FC(Constan)m(t)k(declaration)750 3295 y FD(A)c(constan)n(t)f (declaration)f(is)h(of)h(the)g(form)905 3444 y FB(#const)41 b Fm(bar)57 b FB(=)43 b Fm(expr)13 b FB(.)722 3577 y FD(This)24 b(declares)e(the)h(iden)n(ti\014er)h Fy(b)l(ar)32 b FD(as)23 b(b)r(eing)g(a)g(n)n(umeric)g(constan)n(t)g(with)g(the)h(v) -5 b(alue)722 3677 y Fy(expr)43 b FD(that)34 b(ma)n(y)e(b)r(e)i(an)n(y) f(constan)n(t)g(v)-5 b(alued)33 b(expression.)53 b(It)34 b(is)g(also)e(p)r(ossible)h(to)722 3776 y(de\014ne)h(constan)n(ts)f (from)h(the)g(command)g(line)g(b)n(y)f(using)h(the)g(option)g FB(-c)p FD(.)55 b(There)722 3876 y(are)27 b(more)g(ab)r(out)g(n)n (umeric)g(constan)n(ts)g(in)h(Section)f(5.2.)515 4042 y FC(Domain)j(declaration)p 432 4831 4 748 v 722 4167 a FD(A)e(domain)f(declaration)g(is)g(of)h(the)g(form)905 4316 y FB(#domain)41 b(a\(X\).)722 4449 y FD(The)33 b(domain)f (declaration)f(ab)r(o)n(v)n(e)h(asserts)f(that)i(the)g(v)-5 b(ariable)31 b FB(X)i FD(should)f(alw)n(a)n(ys)722 4548 y(get)f(its)g(domain)f(from)g(the)h(literal)g FB(a\(X\))p FD(.)e(In)i(practice,)f(this)h(is)g(implemen)n(ted)g(b)n(y)722 4648 y(adding)26 b FB(a\(X\))e FD(in)n(to)h(the)h(tails)f(of)g(all)g (rules)g(where)g FB(X)g FD(o)r(ccurs.)35 b(The)25 b(literal)g(is)g (added)722 4748 y(to)35 b(all)f(suc)n(h)g(rules,)i(no)e(matter)g (whether)h FB(X)f FD(w)n(ould)g(b)r(e)h(otherwise)e(restricted)h(or)722 4847 y(not.)1905 5255 y(44)p eop %%Page: 45 49 45 48 bop 722 523 a FC(Example)31 b(5.1)905 689 y FD(Consider)c(the)h (follo)n(wing)e(program:)1060 789 y FB(#domain)41 b(a\(X,)h(Y\),)g (b\(Z\).)1060 888 y(foo\(X,)f(Y\))i(:-)g(not)f(bar\(X,)f(Y\).)1060 988 y(bar\(X,)g(Z\))i(:-)g(not)f(foo\(X,)f(Z\).)905 1104 y FD(Before)f(the)i(grounding)d(actually)i(tak)n(es)f(place,)k(this)d (program)e(is)i(trans-)905 1204 y(formed)27 b(in)h(the)g(form:)1060 1303 y FB(foo\(X,)41 b(Y\))i(:-)g(a\(X,Y\),)e(not)h(bar\(X,)f(Y\).)1060 1403 y(bar\(X,)g(Z\))i(:-)g(a\(X,Y\),)e(b\(Z\),)g(not)h(foo\(X,)f(Z\).) 905 1519 y FD(Note)22 b(that)h(b)r(oth)f FB(a\(X,Y\))e FD(and)i FB(b\(Z\))f FD(are)g(added)h(to)g(the)h(b)r(o)r(dy)f(of)g(the) h(second)905 1619 y(rule.)2257 b Fi(\006)515 1785 y FC(External)32 b(declaration)750 1885 y FD(An)c(external)f(declaration)f(has)h(the)h (form)905 2034 y FB(#external)40 b(p\(X\).)722 2167 y FD(where)45 b FB(p)f FD(is)h(a)g(domain)f(predicate.)89 b(External)44 b(predicates)g(are)g(used)h(during)722 2267 y(grounding)29 b(to)h(\014nd)h(out)f(p)r(ossible)f(instan)n (tiations)h(of)g(rules)f(dep)r(ending)i(on)f(them)722 2366 y(but)e(they)g(are)f(left)h(out)g(of)f(the)h(actual)f(output.)722 2565 y FC(Example)k(5.2)905 2731 y FD(The)d(program)d Fx(P)12 b FD(:)1060 2831 y FB(#external)40 b(a\(X\).)1060 2931 y(a\(1..2\).)1060 3030 y(b\(X\))i(:-)h(a\(X\).)905 3147 y FD(is)27 b(grounded)g(to)h(the)f(follo)n(wing)g(program:)1060 3246 y FB(b\(1\))42 b(:-)h(a\(1\).)1060 3346 y(b\(2\))f(:-)h(a\(2\).) 3324 3462 y Fi(\006)722 3628 y FD(External)26 b(predicates)g(are)f (useful)j(when)e(the)i(program)c(is)j(large)e(and)i(it)g(has)f(to)h(b)r (e)722 3728 y(grounded)j(man)n(y)f(times)i(with)g(sligh)n(tly)f (di\013eren)n(t)g(extensions)g(for)g(domain)g(pred-)722 3827 y(icates.)43 b(The)30 b(solution)f(is)g(to)h(ground)f(the)h (program)d(once)j(with)g(all)f(p)r(ossible)h(v)-5 b(al-)722 3927 y(ues)26 b(for)f(the)i(domain)e(predicates)g(using)h(external)f (declarations)f(and)i(reading)f(the)722 4027 y(grounded)31 b(program)f(in)i(with)h FB(-g)e FD(command)g(line)h(argumen)n(t)f(when) h(the)g(correct)722 4126 y(extension)27 b(is)h(kno)n(wn.)722 4325 y FC(Example)j(5.3)905 4491 y FD(Supp)r(ose)i(that)h(the)g (program)d(in)j(Example)f(5.2)f(is)i(stored)e(in)i FB(foo.lp)d FD(and)905 4591 y FB(bar.lp)25 b FD(con)n(tains)i(only)g(the)h(fact:) 1060 4691 y FB(a\(1\).)905 4807 y FD(Then,)f(y)n(ou)e(could)h(compute)g (the)h(stable)f(mo)r(dels)g(of)33 b FB(foo.lp)23 b FD(using)k FB(bar.lp)905 4907 y FD(as)g(the)h(source)e(for)h(extension)g(of)34 b FB(a)28 b FD(with)g(the)g(follo)n(wing)e(command)i(lines:)1905 5255 y(45)p eop %%Page: 46 50 46 49 bop 1060 523 a FB(\045)43 b(lparse)e(foo.lp)h(>)h(full)p 2026 523 27 4 v 29 w(grounding)1060 623 y(\045)g(lparse)e(-g)i(full)p 1764 623 V 30 w(grounding)d(bar.lp)h(|)i(smodels)1060 722 y(Answer:)84 b(1)1060 822 y(Stable)41 b(Model:)85 b(b\(1\))42 b(a\(1\))1060 922 y(True)3324 1038 y Fi(\006)722 1204 y FD(F)-7 b(or)31 b(a)f(more)h(thorough)e(explanation)i(on)f FB(external)e FD(and)j(its)g(p)r(ossible)g(uses,)g(see)722 1303 y(Section)d(7.4)f(on)g(page)g(68.)515 1469 y FC(F)-8 b(unction)32 b(declaration)750 1569 y FD(A)c(function)g(declaration)e (is)i(of)f(the)h(form:)905 1719 y FB(#function)40 b Fm(foo)13 b FB(.)722 1851 y FD(This)20 b(declares)d(the)j(iden)n(ti\014er)f Fy(fo)l(o)26 b FD(to)19 b(b)r(e)h(used)f(as)f(a)h(n)n(umeric)g (function)h(throughout)722 1951 y(the)32 b(program.)46 b(The)31 b(user)g(de\014ned)h(functions)f(are)f(describ)r(ed)h(in)h (more)f(detail)g(in)722 2051 y(Section)d(5.7.3.)515 2217 y FC(Hide)j(declaration)750 2316 y FD(A)d(hide)g(declaration)e(has)h(t) n(w)n(o)g(p)r(ossible)g(forms:)905 2466 y FB(#hide.)905 2565 y(#hide)41 b(p\(X,Y\).)722 2698 y FD(The)30 b FB(smodels)c FD(2.x)j(o\013ers)g(a)g(feature)g(where)g(some)g(atoms)g(ma)n(y)g(b)r (e)g(hidden)h(from)722 2798 y(the)g(output.)45 b(The)29 b(atoms)h(still)g(a\013ect)g(the)g(computation)f(in)h(the)g(usual)g(w)n (a)n(y)e(but)722 2897 y(they)36 b(are)f(not)h(prin)n(ted.)61 b(The)36 b(in)n(ternal)f(predicates)g(generated)f(b)n(y)j FB(lparse)c FD(are)722 2997 y(automatically)i(hidden.)62 b(A)36 b(hide)g(declaration)e(without)i(argumen)n(ts)f(marks)f(all)722 3097 y(predicates)39 b(as)g(hidden)h(b)n(y)g(default)g(and)g(the)g FB(show)e FD(declaration)g(can)h(then)i(b)r(e)722 3196 y(used)28 b(to)f(tell)h(what)g(atoms)f(are)f(included)i(in)g(the)g (output.)722 3329 y(The)23 b(second)g(hide)g(declaration)e(ab)r(o)n(v)n (e)h(marks)g(all)g(ground)g(instances)h(of)g(the)g(2-ary)722 3429 y(predicate)32 b Fy(p)38 b FD(to)33 b(b)r(e)g(hidden.)52 b(The)32 b(argumen)n(ts)f(of)i Fy(p)38 b FD(are)32 b(used)g(only)g(to)g (distinct)722 3528 y(predicates)27 b(with)h(di\013eren)n(t)g(arities)f (from)g(eac)n(h)g(other.)722 3661 y(F)-7 b(or)27 b(example,)h(if)g(the) g(program)905 3811 y FB(#hide)41 b(p\(X\).)905 3910 y(p\(1..2\).)905 4010 y(p\(X,Y\))g(:-)i(p\(X\),)e(p\(Y\).)722 4143 y FD(is)28 b(giv)n(en)f(to)g FB(smodels)e FD(as)i(input,)h(the)g(output)g(will)g (b)r(e:)905 4292 y FB(smodels)41 b(version)f(2.16.)85 b(Reading...done)905 4392 y(Answer:)f(1)905 4491 y(Stable)41 b(Model:)85 b(p\(1,1\))41 b(p\(2,1\))g(p\(1,2\))g(p\(2,2\))905 4591 y(True)515 4757 y FC(Option)31 b(declaration)1905 5255 y FD(46)p eop %%Page: 47 51 47 50 bop 432 1120 4 567 v 722 637 a FD(An)28 b(option)g(declaration)e (is)h(of)h(the)g(form)905 787 y FB(#option)41 b Fm(command-line-op)o (tio)o(n)8 b FB(.)722 919 y FD(This)33 b(declaration)e(can)h(b)r(e)h (used)g(to)f(set)h FB(lparse)d FD(command)i(line)h(argumen)n(ts)e(in) 722 1019 y(the)h(source)e(co)r(de.)49 b(This)31 b(is)h(mainly)f(useful) h(if)g(y)n(our)e(program)f(uses)i(some)g(of)h(the)722 1119 y(supp)r(orted)c(translations,)e(for)h(example)g FB(--true-negation)22 b FD(or)k FB(--partial)p FD(.)515 1354 y FC(Sho)m(w)32 b(declaration)750 1454 y FD(A)c(sho)n(w)f (declaration)f(has)h(the)h(form)905 1597 y FB(#show)41 b(p\(X,Y\).)722 1728 y FD(This)25 b(declaration)f(is)g(the)i(opp)r (osite)e(of)h(a)f(hide)i(declaration.)34 b(It)25 b(tells)g FB(lparse)e FD(that)722 1827 y(the)32 b(2-ary)d(predicate)h Fy(p)37 b FD(should)31 b(b)r(e)g(sho)n(wn)f(in)i(the)f(mo)r(del.)47 b(This)31 b(is)g(only)g(useful)722 1927 y(when)d(all)f(predicates)g (are)g(hidden)h(using)f(an)g(empt)n(y)i FB(hide)d FD(declaration.)515 2089 y FC(W)-8 b(eigh)m(t)31 b(declaration)750 2188 y FD(A)d(w)n(eigh)n(t)f(declaration)f(has)h(t)n(w)n(o)g(p)r(ossible)g (forms:)905 2331 y FB(#weight)41 b Fm(literal)78 b FB(=)43 b Fm(expr)12 b FB(.)905 2431 y(#weight)41 b Fm(literal)1562 2443 y Ft(1)1640 2431 y FB(=)i Fm(literal)2035 2443 y Ft(2)2069 2431 y FB(.)722 2547 y FD(The)37 b(\014rst)f(one)g(declares)f (the)i(default)g(w)n(eigh)n(t)f(of)h(a)f(literal)g Fy(liter)l(al)46 b FD(to)36 b(b)r(e)h Fy(expr)9 b FD(.)722 2647 y(An)n(y)23 b(v)-5 b(ariables)22 b(o)r(ccuring)g(in)i Fy(expr)32 b FD(m)n(ust)23 b(also)f(o)r(ccur)g(in)i Fy(liter)l(al)9 b FD(.)36 b(The)23 b(w)n(eigh)n(ts)f(will)722 2746 y(b)r(e)30 b(instan)n(tiated)f(during)f(grounding.)41 b(The)29 b(second)f(one)h (declares)f(the)i(w)n(eigh)n(t)e(of)722 2846 y Fy(liter)l(al)928 2858 y Ft(1)1002 2846 y FD(to)36 b(b)r(e)h(the)f(same)f(as)h(the)g(w)n (eigh)n(t)f(of)h Fy(liter)l(al)2443 2858 y Ft(2)2518 2846 y FD(that)g(ma)n(y)f(b)r(e)h(de\014ned)h(in)722 2946 y(other)27 b(part)g(of)h(the)g(program.)722 3076 y(When)22 b(a)f(w)n(eigh)n(t)f(is)i(needed)f(for)g(a)f(literal)h Fx(a)g FD(that)h(do)r(esn't)f(ha)n(v)n(e)f(an)h(explicit)h(w)n(eigh)n (t)722 3176 y(assigned)h(to)g(it,)i FB(lparse)d FD(starts)g(lo)r(oking) h(for)g(w)n(eigh)n(t)g(de\014nitions)h(that)g(it)g(has)f(seen)722 3276 y(b)r(efore)33 b(the)g(line)g(in)g(question.)51 b FB(Lparse)31 b FD(tries)h(to)h(unify)g Fx(a)g FD(with)g(eac)n(h)f (de\014nition)722 3375 y(and)h(when)g(a)g(matc)n(h)f(is)h(found,)i(it)e (uses)g(that)g(w)n(eigh)n(t.)52 b(If)34 b(no)e(w)n(eigh)n(t)h (de\014nition)722 3475 y(matc)n(hes)d Fx(a)p FD(,)h(the)g(global)e (default)i(w)n(eigh)n(t)f(\(1,)h(if)g(not)f(set)g(with)h(the)g FB(-w)f FD(option\))g(is)722 3575 y(used.)722 3705 y(F)-7 b(or)27 b(example,)h(in)f(a)h(program)905 3848 y FB(#weight)41 b(p\(X,Y\))g(=)i(1.)905 3948 y(#weight)e(p\(a,Y\))g(=)i(2.)905 4047 y(#weight)e(p\(a,b\))g(=)i(3.)905 4147 y(a)g(:-)g(2)g([)g (p\(a,b\)=1,)d(p\(a,a\),)h(p\(b,b\))g(].)722 4278 y FD(the)25 b(w)n(eigh)n(t)e(of)i Fx(p)p FD(\()p Fx(a;)14 b(b)p FD(\))24 b(is)g(1)g(b)r(ecause)g(the)g(explicit)h(de\014nition)f(o)n(v)n (errides)e(all)i(global)722 4377 y(de\014nitions.)43 b FB(Lparse)27 b FD(then)j(starts)e(lo)r(oking)h(for)g(w)n(eigh)n(t)g (of)g Fx(p)p FD(\()p Fx(a;)14 b(a)p FD(\).)42 b(It)30 b(\014rst)f(tries)722 4477 y(to)d(unify)h Fx(p)p FD(\()p Fx(a;)14 b(a)p FD(\))26 b(and)g Fx(p)p FD(\()p Fx(a;)14 b(b)p FD(\),)26 b(but)h(fails)f(b)r(ecause)f Fx(a)e Fz(6)p FD(=)g Fx(b)p FD(.)36 b(Unifying)27 b(with)f Fx(p)p FD(\()p Fx(a;)14 b(Y)19 b FD(\))722 4577 y(succeeds)29 b(when)h(the)g(v)-5 b(ariable)28 b Fx(Y)48 b FD(is)29 b(binded)h(to)g(the)g(v)-5 b(alue)29 b Fx(a)p FD(.)42 b(Th)n(us,)30 b(the)g(w)n(eigh)n(t)722 4676 y(of)25 b Fx(p)p FD(\()p Fx(a;)14 b(a)p FD(\))24 b(is)g(2.)35 b(Using)24 b(a)g(similar)g(pro)r(cess,)g FB(lparse)d FD(determines)k(that)f(the)h(w)n(eigh)n(t)722 4776 y(of)j Fx(p)p FD(\()p Fx(b;)14 b(b)p FD(\))27 b(is)h(1.)722 4907 y(If)20 b(the)g(w)n(eigh)n(t)f(of)g(a)g(literal)g(is)h(de\014ned)f (more)g(than)h(once,)g(only)f(the)h(latest)g(de\014nition)722 5006 y(is)28 b(used.)37 b(F)-7 b(or)27 b(example:)1905 5255 y(47)p eop %%Page: 48 52 48 51 bop 905 523 a FB(#weight)41 b(p\(X\))h(=)h(X.)905 623 y(#weight)e(p\(2\))h(=)h(10.)905 722 y(a)g(:-)g(2)g([)g(p\(1\),)f (p\(2\))g(].)86 b(\045)43 b(weights:)84 b(p\(1\))42 b(=)h(1,)g(p\(2\))f (=)h(10)905 837 y(#weight)e(p\(Y\))h(=)h(Y+5.)905 936 y(b)g(:-)g(2)g([)g(p\(1\),)f(p\(2\))g(].)86 b(\045)43 b(weights:)84 b(p\(1\))42 b(=)h(6,)g(p\(2\))f(=)h(7)p 432 2086 4 1047 v 722 1123 a FD(The)21 b(w)n(eigh)n(ts)g(ma)n(y)f(b)r (e)i(de\014ned)f(separately)f(for)g(p)r(ositiv)n(e)h(and)g(negativ)n(e) f(literals.)34 b(If)722 1223 y(a)29 b(negativ)n(e)e(literal)h(do)r (esn't)h(ha)n(v)n(e)e(a)i(matc)n(hing)f(negativ)n(e)f(w)n(eigh)n(t)h (declaration,)g(it)722 1323 y(uses)18 b(a)g(corresp)r(onding)f(p)r (ositiv)n(e)h(one)g(b)n(y)g(default.)34 b(This)18 b(b)r(eha)n(vior)f (can)h(b)r(e)h(c)n(hanged)722 1422 y(with)28 b(the)g(option)g(`)p FB(--separate-weigh)o(t-)o(de)o(fin)o(it)o(ion)o(s)p FD('.)j(F)-7 b(or)27 b(example,)g(after:)905 1572 y FB(#weight)41 b(a)i(=)g(2.)905 1671 y(#weight)e(not)h(a)h(=)g(3.)905 1771 y(#weight)e(b)i(=)g(5)722 1904 y FD(the)32 b(w)n(eigh)n(t)f(of)g Fx(a)h FD(is)f(2,)h(of)f(not)h Fx(a)f FD(is)h(3,)g(and)f(b)r(oth)h Fx(b)f FD(and)g(not)h Fx(b)f FD(ha)n(v)n(e)f(w)n(eigh)n(ts)g(5.)722 2003 y(Ho)n(w)n(ev)n(er,)i(with)h(the)f(ab)r(o)n(v)n(e)f(command)h (line)h(argumen)n(t)e(the)i(w)n(eigh)n(t)f(of)g(not)g Fx(b)g FD(is)722 2103 y(the)c(default)g(1.)515 2432 y FA(5.6)135 b(Statemen)l(ts)515 2614 y FD(The)27 b(statemen)n(ts)g(are)g (used)g(to)g(sp)r(ecify)h(desired)f(prop)r(erties)f(of)i(the)f(mo)r (dels.)37 b(There)27 b(are)515 2714 y(t)n(w)n(o)g(kinds)g(of)h (statemen)n(ts,)f(compute)h(and)f(optimize)h(statemen)n(ts.)515 2886 y FC(Compute)i(statemen)m(t)750 2986 y FD(A)e(compute)g(statemen)n (t)f(is)h(of)f(the)h(form:)905 3129 y FB(compute)41 b Fm(number)55 b Fz(f)43 b FB(a)p 1707 3129 27 4 v 31 w(1,)g Fx(:)14 b(:)g(:)g FB(,)43 b(a)p 2111 3129 V 31 w(n,)g(not)f(b)p 2491 3129 V 31 w(1,)h Fx(:)14 b(:)g(:)f FB(,)44 b(not)e(b)p 3069 3129 V 31 w(m)h Fz(g)p FB(.)722 3260 y FD(Only)26 b(stable)f(mo)r(dels)h(con)n(taining)f Fx(a)1888 3272 y Ft(1)1925 3260 y FD(,)h Fx(:)14 b(:)g(:)g FD(,)26 b Fx(a)2178 3272 y Fk(n)2249 3260 y FD(and)g(not)g(con)n(taining)f Fx(b)2993 3272 y Ft(1)3029 3260 y FD(,)i Fx(:)14 b(:)g(:)f FD(,)27 b(1)p Fx(b)3317 3272 y Fk(m)722 3360 y FD(are)f(computed.)37 b(The)27 b(n)n(um)n(b)r(er)g(of)g(generated)f(mo)r(dels)h(is)g(con)n (trolled)f(b)n(y)h Fy(numb)l(er)9 b FD(.)722 3459 y(If)29 b Fy(numb)l(er)36 b FD(is)28 b(0)g(or)f(the)h(iden)n(ti\014er)g Fx(al)r(l)r FD(,)f(all)h(mo)r(dels)g(are)f(computed.)39 b(The)28 b(default)722 3559 y(n)n(um)n(b)r(er)g(of)f(mo)r(dels)h(is)f (1.)515 3721 y FC(Optimize)i(statemen)m(t)778 3821 y FD(An)f(optimize)f(statemen)n(t)h(has)f(four)g(p)r(ossible)h(forms:)905 3979 y FB(maximize)40 b Fz(f)j FB(a)p 1431 3979 V 31 w(1,)g Fx(:)14 b(:)g(:)g FB(,)43 b(a)p 1835 3979 V 31 w(n,)g(not)f(b)p 2215 3979 V 31 w(1,)h Fx(:)14 b(:)g(:)f FB(,)44 b(not)e(b)p 2793 3979 V 31 w(m)h Fz(g)p FB(.)905 4078 y(maximize)d([)j(l)p 1433 4078 V 31 w(1)h(=)f(w)p 1683 4078 V 31 w(1,)f Fx(:)14 b(:)g(:)g FB(,)43 b(l)p 2086 4078 V 31 w(n)g(=w)p 2292 4078 V 31 w(n)g(].)905 4178 y(minimize)d Fz(f)j FB(a)p 1431 4178 V 31 w(1,)g Fx(:)14 b(:)g(:)g FB(,)43 b(a)p 1835 4178 V 31 w(n,)g(not)f(b)p 2215 4178 V 31 w(1,)h Fx(:)14 b(:)g(:)f FB(,)44 b(not)e(b)p 2793 4178 V 31 w(m)h Fz(g)p FB(.)905 4278 y(minimize)d([)j(l)p 1433 4278 V 31 w(1)h(=)f(w)p 1683 4278 V 31 w(1,)f Fx(:)14 b(:)g(:)g FB(,)43 b(l)p 2086 4278 V 31 w(n)g(=)h(w)p 2336 4278 V 31 w(n)f(].)722 4408 y FD(When)31 b(an)f(optimize)g (statemen)n(t)g(is)g(giv)n(en,)f FB(smodels)f FD(tries)h(to)h(\014nd)h (mo)r(dels)f(with)722 4508 y(as)k(man)n(y)f(\(or)h(as)f(few\))i(of)f (the)g(giv)n(en)g(literals)f(as)h(p)r(ossible.)56 b(Y)-7 b(ou)34 b(ma)n(y)f(also)g(use)722 4608 y(w)n(eigh)n(ts)23 b(with)h(these)g(literals)f(and)g(then)h(the)g(mo)r(del)g(with)g (maximal)f(\(or)h(minimal\))722 4707 y(w)n(eigh)n(t)36 b(is)g(returned.)62 b(The)36 b(optimize)g(statemen)n(ts)g(use)g(braces) f(analogously)e(to)722 4807 y(constrain)n(t)20 b(and)h(w)n(eigh)n(t)g (literals;)i(with)e(curly)g(braces)f(the)i(n)n(um)n(b)r(er)f(of)g(true) g(literals)722 4907 y(is)28 b(maximized)g(\(or)f(minimized\))i(and)e (with)i(square)d(brac)n(k)n(ets)g(the)i(w)n(eigh)n(t)f(of)h(true)722 5006 y(literals)f(is)h(maximized.)1905 5255 y(48)p eop %%Page: 49 53 49 52 bop 722 523 a FD(Ho)n(w)n(ev)n(er,)22 b(the)h(b)r(eha)n(vior)e (of)29 b FB(smodels)20 b FD(is)j(not)f(the)h(one)g(that)g(w)n(ould)f (come)g(to)h(mind)722 623 y(\014rst.)48 b(Namely)-7 b(,)32 b FB(smodels)c FD(\014rst)j(searc)n(hes)f(a)g(single)h(mo)r(del)h(and)f (prin)n(ts)f(it.)49 b(After)722 722 y(that,)38 b FB(smodels)32 b FD(prin)n(ts)j(only)g(\\b)r(etter")f(mo)r(dels.)60 b(F)-7 b(or)34 b(example,)j(if)e(in)h(the)f(\014rst)722 822 y(mo)r(del)d(includes)g(three)f(optimized)h(atoms,)g(only)g(those)f (with)h(four)f(or)g(more)g(are)722 922 y(returned)c(afterw)n(ards.)722 1054 y(If)f(there)f(are)g(man)n(y)g(optimize)g(statemen)n(ts,)h(they)f (are)g(considered)f(in)i(\014xed)f(order,)722 1154 y(the)e(last)f(one)g (b)r(eing)g(the)h(strongest.)34 b(When)22 b(comparing)f(t)n(w)n(o)h(mo) r(dels)g Fx(M)3046 1166 y Ft(1)3105 1154 y FD(and)g Fx(M)3342 1166 y Ft(2)722 1254 y FD(the)30 b(last)f(optimize)h(statemen)n(t)f(is) g(considered)g(\014rst.)42 b(If)30 b(it)g(giv)n(es)e(di\013eren)n(t)h (v)-5 b(alues)722 1353 y(for)26 b(b)r(oth)h(mo)r(dels,)g(the)g(rest)e (of)i(the)g(statemen)n(ts)f(are)f(not)i(ev)-5 b(aluated)26 b(at)g(all.)36 b(Only)722 1453 y(if)25 b Fx(M)876 1465 y Ft(1)938 1453 y FD(and)f Fx(M)1177 1465 y Ft(2)1238 1453 y FD(tie)h(with)g(resp)r(ect)f(to)h(the)g(last)f(optimize)g (statemen)n(t)h(the)g(next)f(one)722 1553 y(b)r(efore)k(it)g(is)f (used,)h(and)f(so)g(on.)515 1827 y FA(5.7)135 b(F)-11 b(unctions)515 2009 y FD(There)30 b(are)f(t)n(w)n(o)h(kinds)g(of)g (functions)h(in)f FB(lparse)p FD(,)f(n)n(umerical)h(functions)g(and)h (sym)n(b)r(olic)515 2109 y(functions.)139 b(The)38 b(di\013erence)g(is) h(that)f(a)g(n)n(umerical)g(function)h(is)f(used)h(to)f(compute)515 2208 y(some)d(concrete)g(n)n(umeric)g(v)-5 b(alue)36 b(but)g(a)f(sym)n(b)r(olic)h(function)g(basically)e(just)j(de\014nes)e (a)515 2308 y(new)27 b(constan)n(t)g(that)h(is)g(the)g(v)-5 b(alue)27 b(of)h(the)g(function.)639 2407 y(F)-7 b(or)27 b(example,)g(in)h(a)g(program:)722 2524 y FB(d\(1..2\).)84 b(e\(a)42 b(;)i(b\).)722 2623 y(q\(X+1\))d(:-)i(d\(X\).)722 2723 y(p\(f\(X\)\))e(:-)i(e\(X\).)639 2823 y FD(there)24 b(are)e(t)n(w)n(o)h(functions,)h Fx(X)17 b FD(+)10 b(1)23 b(and)g Fx(f)9 b FD(\()p Fx(X)e FD(\).)35 b(Here)23 b Fx(X)17 b FD(+)10 b(1)22 b(is)i(a)f(n)n(umerical)f(function)515 2922 y(and)37 b(its)g(v)-5 b(alue)37 b(is)h(computed)f(during)g (grounding.)64 b(On)37 b(the)h(other)f(hand,)j Fx(f)9 b FD(\()p Fx(X)e FD(\))36 b(is)h(a)515 3022 y(sym)n(b)r(olic)26 b(function)i(and)f(only)g(thing)g(that)h(grounding)d(do)r(es)i(to)g(it) h(is)f(to)g(instan)n(tiate)g Fx(X)7 b FD(.)515 3121 y(The)27 b(grounded)g(program)f(is:)722 3238 y FB(d\(1\).)85 b(d\(2\).)g (e\(a\).)h(e\(b\).)722 3337 y(q\(2\))42 b(:-)h(d\(1\).)722 3437 y(q\(3\))f(:-)h(d\(2\).)722 3537 y(p\(f\(a\)\))e(:-)i(e\(a\).)722 3636 y(p\(f\(b\)\))e(:-)i(e\(b\).)639 3736 y FD(The)28 b(functions)g Fx(f)9 b FD(\()p Fx(a)p FD(\))28 b(and)f Fx(f)9 b FD(\()p Fx(b)p FD(\))27 b(are)g(treated)g(just)h(lik)n(e)g (constan)n(ts)e(b)n(y)j FB(smodels)p FD(.)639 3835 y(A)h(n)n(umerical)e (function)i(has)f(to)g(b)r(e)h(declared)f(with)h(a)f(function)g (declaration)f(b)r(efore)515 3935 y(they)g(can)f(b)r(e)h(used.)515 4167 y Fh(5.7.1)112 b(Numerical)35 b(F)-9 b(unctions)515 4321 y FD(Numerical)31 b(functions)i(can)e(o)r(ccur)h(in)g(t)n(w)n(o)f (di\013eren)n(t)h(roles)f(in)i(rules,)f(either)g(as)f(a)h(term)515 4420 y(or)26 b(as)h(a)h(test)f(in)h(a)f(rule)h(b)r(o)r(dy)-7 b(.)639 4520 y(As)25 b(a)f(term,)h(a)f(n)n(umerical)g(function)h(giv)n (es)e(a)h(v)-5 b(alue)24 b(to)h(an)f(argumen)n(t)f(of)i(a)f(predicate.) 515 4620 y(During)33 b(grounding)f(the)i(rule)f(the)h(function)g(is)g (called)f(and)g(the)h(return)f(v)-5 b(alue)34 b(is)f(used)515 4719 y(as)c(the)i(argumen)n(t.)44 b(In)n(ternally)29 b(the)i(function)g(is)f(replaced)f(b)n(y)h(a)g(new)g(v)-5 b(ariable)29 b(and)h(an)515 4819 y(assign)c(function)i(in)g(the)g(rule) f(b)r(o)r(dy)-7 b(.)639 4918 y(F)g(or)27 b(example,)1905 5255 y(49)p eop %%Page: 50 54 50 53 bop 1286 581 a FD(T)-7 b(able)28 b(5.1:)36 b FB(Lparse)25 b FD(in)n(ternal)i(functions)p 908 694 2079 4 v 906 793 4 100 v 1038 764 a(F)-7 b(unction)p 1485 793 V 180 w(Op)r(erator)p 1915 793 V 1932 793 V 216 w(F)g(unction)p 2554 793 V 202 w(Op)r(erator)p 2984 793 V 908 797 2079 4 v 906 896 4 100 v 1001 866 a FB(plus\(X,Y\))p 1485 896 V 196 w(X)43 b(+)g(Y)p 1915 896 V 1932 896 V 281 w(lt\(X,Y\))p 2554 896 V 252 w(X)g Fx(<)g FB(Y)p 2984 896 V 906 996 V 979 966 a(minus\(X,Y\))p 1485 996 V 163 w(X)h Fz(\000)f FB(Y)p 1915 996 V 1932 996 V 270 w(gt\(X,Y\))p 2554 996 V 252 w(X)g Fx(>)g FB(Y)p 2984 996 V 906 1096 V 979 1066 a(times\(X,Y\))p 1485 1096 V 175 w(X)g Fz(\003)g FB(Y)p 1915 1096 V 1932 1096 V 282 w(le\(X,Y\))p 2554 1096 V 230 w(X)g Fx(<)p FB(=)g(Y)p 2984 1096 V 906 1195 V 1023 1165 a(div\(X,Y\))p 1485 1195 V 218 w(X)g(/)g(Y)p 1915 1195 V 1932 1195 V 281 w(ge\(X,Y\))p 2554 1195 V 230 w(X)g Fx(>)p FB(=)g(Y)p 2984 1195 V 906 1295 V 1023 1265 a(mod\(X,Y\))p 1485 1295 V 174 w(X)g(mod)g(Y)p 1915 1295 V 1932 1295 V 237 w(eq\(X,Y\))p 2554 1295 V 240 w(X)g(==)g(Y)p 2984 1295 V 906 1394 V 958 1365 a(assign\(X,Y\))p 1485 1394 V 151 w(X)g(=)g(Y)p 1915 1394 V 1932 1394 V 259 w(neq\(X,Y\))p 2554 1394 V 218 w(X)g(!=)g(Y)p 2984 1394 V 906 1494 V 1023 1464 a(and\(X,Y\))p 1485 1494 V 218 w(X)g(&)g(Y)p 1915 1494 V 1932 1494 V 259 w(xor\(X,Y\))p 2554 1494 V 240 w(X)g(^)g(Y)p 2984 1494 V 906 1594 V 1045 1564 a(or\(X,Y\))p 1485 1594 V 250 w(X)g Fz(j)h FB(Y)p 1915 1594 V 1932 1594 V 291 w(bnot\(X\))p 2554 1594 V 327 w(~X)p 2984 1594 V 906 1693 V 1067 1663 a(abs\(X\))p 1485 1693 V 282 w Fz(j)g FB(X)f Fz(j)p 1915 1693 V 1932 1693 V 193 w FB(weight\(a\(X\)\))p 2554 1693 V 2984 1693 V 908 1697 2079 4 v 722 2029 a(p\(X,)f(Y,)h(X+Y\))f(:-)h(d\(X,Y\).)639 2128 y FD(b)r(ecomes)722 2245 y FB(p\(X,)f(Y,)h(Z\))g(:-)f(d\(X,Y\),)f (Z)i(=)h(X+Y.)639 2344 y FD(If)27 b(w)n(e)e(ground)g(the)h(ab)r(o)n(v)n (e)f(rule)g(with)h(a)g(v)-5 b(ariable)25 b(binding)h Fz(f)p Fx(X=)p FD(1)p Fx(;)14 b(Y)9 b(=)p FD(2)p Fz(g)p FD(,)23 b(the)j(ground)515 2444 y(rule)h(b)r(ecomes)722 2560 y FB(p\(1,2,3\))41 b(:-)h(d\(1,2\).)639 2660 y FD(As)34 b(a)e(test,)j(a)e(function)h(w)n(orks)d(as)i(a)g(constrain)n(t)f(for)g (p)r(ossible)h(v)-5 b(ariable)32 b(v)-5 b(alues.)54 b(If)515 2759 y(the)27 b(function)h(returns)e Fu(false)p FD(,)h(i.e.)37 b(0,)26 b(when)i(called)e(with)i(a)e(giv)n(en)g(v)-5 b(ariable)26 b(binding,)i(the)515 2859 y(binding)h(is)g(discarded.)39 b(If)29 b(it)h(returns)e Fu(true)p FD(,)h(i.e.)41 b(an)n(y)28 b(v)-5 b(alue)29 b(other)f(than)h(0,)g(the)g(ground)515 2959 y(rule)c(corresp)r(onding)f(to)i(the)g(binding)g(is)g(prin)n(ted.) 36 b(After)27 b(the)f(test)g(has)f(b)r(een)i(p)r(erformed)515 3058 y(succesfully)-7 b(,)27 b(the)h(function)g(is)g(remo)n(v)n(ed)e(b) r(efore)h(prin)n(ting)g(the)h(ground)f(rule.)639 3158 y(F)-7 b(or)27 b(example,)g(the)h(program:)722 3274 y FB(d\(1\).)85 b(d\(2\).)722 3374 y(q\(X,Y\))41 b(:-)i(d\(X\),)f (d\(Y\),)f(X)i(<)h(Y.)639 3473 y FD(is)28 b(grounded)e(to)i(giv)n(e)722 3590 y FB(d\(1\).)85 b(d\(2\).)722 3689 y(q\(1,2\))41 b(:-)i(d\(1\),)f(d\(2\).)639 3789 y FD(A)33 b(n)n(umerical)e(function)i (has)f(to)g(b)r(e)h(declared)e(\(see)h(Section)g(5.5\))g(b)r(efore)g (it)h(can)f(b)r(e)515 3888 y(used.)515 4121 y Fh(5.7.2)112 b(In)m(ternal)37 b(F)-9 b(unctions)515 4274 y FD(There)40 b(are)g(17)f(di\013eren)n(t)i(arithmetical)f(functions)h(built)g(in)g FB(lparse)p FD(.)74 b(The)41 b(in)n(ternal)515 4374 y(functions)21 b(are)f(automatically)f(declared)h(unless)g(the)i FB(-i)e FD(command)g(line)h(option)f(is)h(giv)n(en.)515 4473 y(The)27 b FB(lparse)f FD(in)n(teral)g(functions)i(are)f(sho)n(wn)g(in) h(T)-7 b(able)27 b(5.1.)639 4573 y(There)d(is)h(an)f(in\014x)h(op)r (erator)e(de\014ned)i(for)f(eac)n(h)g(in)n(ternal)g(function)2777 4543 y Ft(1)2815 4573 y FD(.)36 b(The)25 b(notations)515 4673 y Fx(f)9 b FD(\()p Fx(X)r(;)14 b(Y)k FD(\))29 b(and)g Fx(X)c Fz(\016)1131 4685 y Fk(f)1193 4673 y Fx(Y)48 b FD(are)28 b(in)n(terc)n(hangeable.)38 b(In)29 b(fact,)h(the)f(latter)g (is)f(con)n(v)n(erted)g(in)n(ter-)515 4772 y(nally)g(to)h(the)h (former.)40 b(All)30 b(in)n(ternal)e(functions)h(accept)g(man)n(y)g (argumen)n(ts,)f(so)g(y)n(ou)g(can)515 4872 y(call)20 b(for)h(example)f Fx(pl)r(us)p FD(\()p Fx(X)r(;)14 b(Y)5 b(;)14 b(Z)q(;)g FD(2\).)33 b(The)21 b(op)r(erator)e(precedence)i(is)g (sho)n(wn)f(in)h(T)-7 b(able)21 b(5.2.)p 515 4925 1146 4 v 607 4979 a Fs(1)642 5002 y Fr(With)j(the)h(exception)g(of)k Fq(weight\(a\(X\)\))p Fr(.)1905 5255 y FD(50)p eop %%Page: 51 55 51 54 bop 1242 581 a FD(T)-7 b(able)27 b(5.2:)36 b FB(Lparse)25 b FD(op)r(erator)h(precedence)p 1468 694 958 4 v 1466 793 4 100 v 1717 764 a Fz(\000)i FD(\(unary\),)f(~)p 2424 793 V 1468 797 958 4 v 1466 896 4 100 v 1775 866 a Fz(\003)p FD(,)g Fx(=)p FD(,)h(mo)r(d)p 2424 896 V 1468 900 958 4 v 1466 999 4 100 v 1857 969 a(+,)f Fz(\000)p 2424 999 V 1468 1003 958 4 v 1466 1102 4 100 v 1518 1072 a FD(==,)g(!=,)g Fx(<)p FD(,)g Fx(>)p FD(,)h Fx(<)p FD(=,)f Fx(>)p FD(=)p 2424 1102 V 1468 1106 958 4 v 1466 1205 4 100 v 1832 1175 a(&,)g Fz(j)p FD(,)h(^)p 2424 1205 V 1468 1209 958 4 v 1466 1308 4 100 v 1915 1278 a(=)p 2424 1308 V 1468 1311 958 4 v 639 1644 a(Only)d(comparison)d(functions) j(allo)n(w)f(sym)n(b)r(olic)g(constan)n(ts)f(as)h(their)h(argumen)n(ts) e(and)515 1743 y(the)28 b(others)f(w)n(ork)f(only)i(for)f(n)n(um)n(b)r (ers.)37 b(The)28 b(sym)n(b)r(olic)f(constan)n(ts)g(are)g(compared)f (using)515 1843 y(lexicographic,)f(that)j(is)g(phoneb)r(o)r(ok,)f (ordering.)639 1942 y(The)h(functions)f FB(and)p FD(,)g FB(or)p FD(,)g FB(xor)p FD(,)f(and)h FB(b)p 1878 1942 27 4 v 31 w(not)f FD(implemen)n(t)i(the)g(bit)n(wise)f(logical)f(op)r (era-)515 2042 y(tions.)639 2142 y(The)f FB(assign)p FD(-function)e(returns)h(alw)n(a)n(ys)f(1)h(when)h(the)g(assignmen)n(t) f(succeeds,)h(so)f(the)515 2241 y(constructs)j(lik)n(e)g FB(X)43 b(=)g(Y)g(=)g(5)28 b FD(don't)f(w)n(ork)g(lik)n(e)g(they)h(do)f (in)h(some)f(other)g(languages.)p 432 3548 4 1258 v 639 2348 a(The)20 b FB(weight)d FD(function)j(is)f(a)g(sp)r(ecial)g(case)f (that)i(tak)n(es)e(a)h(basic)g(literal)g(as)g(its)g(argumen)n(t)515 2448 y(and)27 b(returns)g(its)h(w)n(eigh)n(t.)515 2614 y FC(Example)i(5.4)722 2780 y FD(Consider)d(the)h(program:)905 2929 y FB(weight)41 b(a\(X\))h(=)h(X.)905 3029 y(b\(1..4\).)905 3129 y(c\(X\))f(:-)h(b\(X\),)e(weight\(a\(X\)\))e(<=)k(2.)905 3228 y(d\(X,Y\))e(:-)i(b\(X\),)e(b\(Y\),)h(weight\(a\(X\)\))c(+)44 b(weigh\(a\(Y\)\))39 b(>)k(4.)722 3361 y FD(The)f(extension)f(of)g Fx(c)h FD(will)f(b)r(e)h Fz(f)p Fx(c)p FD(\(1\))p Fx(;)14 b(c)p FD(\(2\))p Fz(g)41 b FD(and)g(the)h(extension)f(of)g Fx(d)h FD(will)g(b)r(e)722 3461 y Fz(f)p Fx(d)p FD(\(1)p Fx(;)14 b FD(4\))p Fx(;)g(d)p FD(\(2)p Fx(;)g FD(3\))p Fx(;)g(d)p FD(\(3)p Fx(;)g FD(2\))p Fx(;)g(d)p FD(\(4)p Fx(;)g FD(1\))p Fz(g)p FD(.)1472 b Fi(\006)515 3780 y Fh(5.7.3)112 b(User-De\014ned)39 b(F)-9 b(unctions)515 3934 y FD(It)34 b(is)g(p)r(ossible)f(to)h(add)g(a)f(user-de\014ned)g(C) h(or)f(C++)g(function)i(to)e FB(lparse)p FD(.)53 b(In)35 b(earlier)515 4033 y(v)n(ersions)21 b(of)30 b FB(lparse)21 b FD(y)n(ou)h(had)h(to)g(use)g(the)h(p)r(erl)f(script)g FB(register)d FD(to)j(link)g(the)h(functions)515 4133 y(statically)34 b(to)h FB(lparse)e FD(binaries.)58 b(The)35 b(curren)n(t)f(metho)r(d)i(allo)n(ws)d(dynamic)i(linking)g(of)515 4233 y(shared)26 b(library)h(\014les)g(to)h FB(lparse)p FD(.)639 4332 y(Just)23 b(ab)r(out)f(ev)n(ery)f(C/C++-function)g(can)h (b)r(e)h(link)n(ed)f(with)h(lparse,)g(but)g(those)f(func-)515 4432 y(tions)40 b(that)g(mean)n(t)g(to)h(b)r(e)f(directly)g(called)g (from)g(logic)g(programs)e(should)i(ha)n(v)n(e)f(the)515 4531 y(protot)n(yp)r(e:)722 4648 y FC(long)44 b FB(foo\()p FC(in)m(t)e FB(num)p 1411 4648 27 4 v 30 w(args,)g FC(long)i FB(*args\))639 4747 y FD(That)32 b(is,)g FB(lparse)d FD(passes)h(the)i(argumen)n(ts)e(in)i(an)f(arra)n(y)e(of)i(long)g(in)n (tegers)f(with)i(an)515 4847 y(in)n(teger)g(parameter)f(telling)j(the)f (lengh)n(t)g(of)g(the)g(arra)n(y)-7 b(.)51 b(The)33 b(sym)n(b)r(olic)g (constan)n(ts)f(are)515 4947 y(enco)r(ded)e(as)g(indices)g(to)h(a)f (sym)n(b)r(ol)g(table)g(where)g(the)h(actual)f(strings)f(are)g(stored.) 45 b(The)1905 5255 y(51)p eop %%Page: 52 56 52 55 bop 515 523 a FD(n)n(umeric)36 b(constan)n(ts)g(can)g(b)r(e)h (handled)g(using)f(normal)g(functions)h(and)g(op)r(erators)d(but)515 623 y(the)i(only)g(w)n(a)n(y)e(to)i(handle)g(sym)n(b)r(olic)g(constan)n (ts)f(is)g(to)h(use)g(the)h FB(lparse)c FD(API)j(that)g(is)515 722 y(in)n(tro)r(duced)27 b(in)h(the)g(next)g(section.)639 822 y FB(Lparse)e FD(uses)j(the)g(normal)e(C)i(con)n(v)n(en)n(tion)e (of)h(treating)g(v)-5 b(alue)29 b(0)f(as)g(false)g(and)g(ev)n(ery)515 922 y(other)f(v)-5 b(alue)27 b(as)g(true.)639 1021 y(Before)c(y)n(ou)g (can)h(use)g(y)n(our)f(o)n(wn)g(function,)i(y)n(ou)e(ha)n(v)n(e)g(to)h (add)g(it)g(to)g(a)f(shared)g(library)515 1121 y(and)31 b(tell)h FB(lparse)e FD(where)h(the)h(library)e(can)i(b)r(e)g(found.)49 b FB(Lparse)30 b FD(searc)n(hes)f(for)i(libraries)515 1220 y(from)c(the)h(follo)n(wing)f(directories:)616 1386 y(1.)41 b(A)28 b(path)g(stored)f(in)h(an)f(en)n(vironmen)n(tal)f(v)-5 b(ariable)27 b FB(LPARSE)p 2591 1386 27 4 v 29 w(LIBRARY)p 2928 1386 V 28 w(PATH)p FD(.)616 1553 y(2.)41 b(Directories)27 b(sp)r(eci\014ed)h(in)f(the)h(\014le)g FB(~/.lparserc)p FD(.)616 1719 y(3.)41 b(A)28 b(path)g(stored)f(in)h(an)f(en)n(vironmen) n(tal)f(v)-5 b(ariable)27 b FB(LD)p 2415 1719 V 30 w(LIBRARY)p 2753 1719 V 29 w(PATH)p FD(.)515 1885 y FB(Lparse)j FD(library)h (de\014nitions)i(ma)n(y)f(b)r(e)h(placed)f(either)h(in)g(the)g(en)n (vironmen)n(tal)e(v)-5 b(ariable)515 1984 y FB(LPARSE)p 784 1984 V 29 w(LIBRARIES)24 b FD(or)i(in)i(the)g(\014le)g FB(.lparserc)p FD(.)639 2084 y(An)g(example)g FB(.lparserc)23 b FD(is:)722 2200 y FB(LPARSE)p 991 2200 V 29 w(LIBRARY)p 1328 2200 V 29 w(PATH)42 b(=)h(/home/tss/lparse)o(-l)o(ibs)722 2300 y(LPARSE)p 991 2300 V 29 w(LIBRARIES)d(=)j(libfoobar.so)639 2399 y FD(If)26 b(y)n(ou)f(ha)n(v)n(e)g(\014les)g FB(foo.c)f FD(and)h FB(bar.c)f FD(that)i(y)n(ou)f(w)n(an)n(t)g(to)g(use)g(with)i (lparse,)e(y)n(ou)f(can)515 2499 y(create)g(the)i(shared)f(library)f (with)i(follo)n(wing)e(steps.)36 b(\(These)26 b(steps)f(w)n(ork)f(with) i FB(gcc)e FD(on)h(a)515 2599 y(Lin)n(ux)i(system;)h(if)g(y)n(ou)e(use) i(some)f(other)g(system)g(they)h(ma)n(y)f(or)g(ma)n(y)g(not)g(w)n (ork.\))616 2781 y(1.)41 b(Compile)28 b(the)g(\014les)f(in)n(to)h(ob)5 b(ject)27 b(\014les)g(using)h(the)g(option)p FB(-fPIC)p FD(:)905 2931 y FB(\045)43 b(gcc)f(-fPIC)g(-Wall)f(-c)i(foo.c)616 3097 y FD(2.)e(Create)33 b(the)h(shared)f(library)-7 b(.)54 b(If)34 b(y)n(our)e(functions)i(call)f(some)g(library)g (functions,)722 3196 y(it)d(will)g(b)r(e)f(safest)g(to)h(link)f(these)h (to)f(the)g(library)-7 b(.)41 b(Here)29 b(w)n(e)g(supp)r(ose)g(that)h FB(foo.c)722 3296 y FD(uses)d(some)g(functions)h(de\014ned)g(in)g (standard)f(math)h(library:)905 3445 y FB(\045)43 b(gcc)f(-shared)f (-Wl,-soname,libfo)o(ob)o(ar)o(.so)c(-o)43 b(libfoobar.so)992 3545 y(foo.o)f(bar.o)f(-lm)616 3711 y FD(3.)g(Mo)n(v)n(e)i FB(libfoobar.so)c FD(to)44 b(a)g(suitable)g(place)g(and)g(put)g(a)g(p)r (oin)n(ter)g(to)g(it)g(in)n(to)722 3811 y FB(.lparserc)p FD(.)515 3993 y(There)33 b(is)h(an)f(example)g(mak)n(e\014le)g(in)i (the)f FB(lib)e FD(directory)h(of)g(the)i FB(lparse)c FD(distribution)515 4093 y(that)d(can)f(b)r(e)h(used)f(as)g(a)h(mo)r (del)f(for)g(generating)f(y)n(our)h(o)n(wn)g(libraries.)639 4193 y(The)34 b(\014nal)g(step)h(is)f(to)g(tell)g FB(lparse)e FD(that)i(y)n(ou)g(w)n(an)n(t)f(to)h(use)g(y)n(our)f(o)n(wn)h (functions.)515 4292 y(This)27 b(is)h(done)f(b)n(y)g(adding)h(a)f (function)h(declaration)722 4408 y FB(function)41 b(foo.)639 4508 y FD(to)31 b(the)h(program.)45 b(When)31 b(a)g(function)g(is)g (declared,)g FB(lparse)e FD(go)r(es)h(on)h(and)g(tries)f(to)515 4608 y(\014nd)35 b(the)h(function)g(sym)n(b)r(ol)f(from)g(the)g (libraries.)59 b(It)36 b(will)f(pic)n(k)g(the)h(\014rst)f(matc)n(h)g (that)515 4707 y(it)e(\014nds)f(and)h(displa)n(y)f(an)g(error)e(if)k (no)e(matc)n(hes)g(are)f(found.)52 b(If)40 b FB(lparse)30 b FD(founds)j(some)515 4807 y(other)24 b(external)f(sym)n(b)r(ol)h (with)h(the)g(same)f(name,)h(suc)n(h)f(as)g(a)g(c)n(haracter)e(arra)n (y)-7 b(,)23 b(it)i(will)g(die)515 4907 y(horribly)k(trying)i(to)f (jump)i(at)e(the)i(sym)n(b)r(ol.)46 b(If)31 b(y)n(ou)f(get)g(a)h(lot)f (of)h(segmen)n(tation)f(faults)515 5006 y(while)e(using)f(y)n(our)f(o)n (wn)h(functions,)h(this)g(ma)n(y)f(b)r(e)h(one)f(reason.)1905 5255 y(52)p eop %%Page: 53 57 53 56 bop 515 443 2865 4 v 515 501 a FB(lparse)p 784 501 27 4 v 29 w(constant)p 1165 501 V 28 w(t)43 b(lparse)p 1544 501 V 29 w(constant)p 1925 501 V 28 w(type\()p FC(long)f FB(constant\))515 601 y FC(in)m(t)h FB(lparse)p 941 601 V 29 w(is)p 1058 601 V 31 w(numeric\()p FC(long)d FB(constant\))515 700 y FC(in)m(t)j FB(lparse)p 941 700 V 29 w(is)p 1058 700 V 31 w(symbolic\()p FC(long)d FB(constant\))515 800 y FC(c)m(har)45 b FB(*lparse)p 1050 800 V 28 w(get)p 1210 800 V 31 w(symbolic)p 1593 800 V 28 w(constant)p 1973 800 V 28 w(name\()p FC(long)d FB(symbolic)p 2791 800 V 28 w(constant\))515 899 y FC(long)i FB(lparse)p 1004 899 V 29 w(get)p 1165 899 V 30 w(symbolic)p 1547 899 V 28 w(constant)p 1927 899 V 28 w(index\()p FC(c)m(har)f FB(*symbolic)p 2835 899 V 27 w(constant\))515 999 y FC(in)m(t)g FB(lparse)p 941 999 V 29 w(symbol)p 1234 999 V 29 w(exists\()p FC(c)m(har)f FB(*symbolic)p 2186 999 V 28 w(constant\))515 1099 y FC(long)i FB(lparse)p 1004 1099 V 29 w(create)p 1297 1099 V 28 w(new)p 1457 1099 V 31 w(symbolic)p 1840 1099 V 28 w(constant\()p FC(c)m(har)d FB(*arg\))p 515 1201 2865 4 v 1335 1342 a FD(Figure)27 b(5.1:)36 b FB(Lparse)25 b FD(API)j(functions)515 1610 y Fh(5.7.4)112 b(Lparse)39 b(API)515 1763 y FD(The)25 b FB(lparse)e FD(v)n(ersion)h(0.99.47)f (added)i(a)g(programming)e(API)i(that)h(allo)n(ws)e(user-de\014ned)515 1863 y(functions)30 b(to)g(manipulate)g(sym)n(b)r(olic)f(constan)n(ts.) 43 b(The)30 b(API)g(functions)g(are)f(de\014ned)i(in)515 1962 y(the)d(\014le)f FB(lparse.h)e FD(that)j(is)f(lo)r(cated)g(in)h (the)g FB(lib)f FD(directory)f(of)34 b FB(lparse)25 b FD(distribution.)639 2062 y(The)c FB(lparse.h)d FD(con)n(tains)i (declarations)f(of)h(sev)n(en)h(functions)g(that)g(pro)n(vide)e(the)j (basic)515 2162 y(constan)n(t)27 b(handling)h(capabilities.)38 b(The)28 b(functions)h(are)e(listed)i(in)f(Figure)g(5.1)f(and)h(their) 515 2261 y(descriptions)d(are)g(b)r(elo)n(w.)36 b(The)25 b(curren)n(t)g(v)n(ersion)g(of)g(the)i(API)e(do)r(esn't)h(di\013eren)n (tiate)g(b)r(e-)515 2361 y(t)n(w)n(een)h(sym)n(b)r(olic)f(constan)n(ts) h(and)g(sym)n(b)r(olic)f(functions.)37 b(That)28 b(is,)f(a)g(sym)n(b)r (olic)f(function)515 2461 y(is)e(in)n(ternally)h(treated)f(as)g(a)h (oridinary)e(constan)n(t)h(that)h(just)g(happ)r(ens)g(to)g(ha)n(v)n(e)f (a)g(sp)r(eci\014c)515 2560 y(form.)639 2660 y(The)i(header)e(\014le)i (de\014nes)f(an)h(en)n(umeration)e FB(lparse)p 2333 2660 27 4 v 29 w(constant)p 2714 2660 V 28 w(t)h FD(to)g(hold)h(the)g(p)r (os-)515 2759 y(sible)h(t)n(yp)r(es)h(of)f(lparse)g(constan)n(ts:)722 2876 y FB(typedef)41 b(enum)h Fz(f)h FB(LP)p 1467 2876 V 31 w(NUMERIC,)d(LP)p 1978 2876 V 30 w(SYMBOLIC)h Fz(g)i FB(lparse)p 2750 2876 V 29 w(constant)p 3131 2876 V 28 w(t;)639 2975 y FD(The)28 b(follo)n(wing)e(functions)i(are)f(a)n(v)-5 b(ailable:)515 3141 y FC(lparse)p 768 3141 29 4 v 34 w(constan)m(t)p 1153 3141 V 35 w(t)32 b(lparse)p 1504 3141 V 34 w(constan)m(t)p 1889 3141 V 35 w(t)m(yp)s(e\(long)h Fl(c)-5 b(onstant)8 b FC(\))722 3241 y FD(The)44 b(function)g FB(lparse)p 1519 3241 27 4 v 29 w(constant)p 1900 3241 V 28 w(type)e FD(returns)h(the)h(t)n(yp)r(e)f(\()p FB(LP)p 2930 3241 V 31 w(NUMERIC)e FD(or)722 3341 y FB(LP)p 815 3341 V 31 w(SYMBOLIC)p FD(\))24 b(of)k(the)g(argumen)n(t)f Fy(c)l(onstant)8 b FD(.)515 3507 y FC(in)m(t)32 b(lparse)p 914 3507 29 4 v 34 w(is)p 1013 3507 V 33 w(n)m(umeric\(long)g Fl(c)-5 b(onstant)8 b FC(\))750 3606 y FD(Returns)27 b Fy(true)34 b FD(if)28 b Fy(c)l(onstant)35 b FD(is)27 b(a)g(n)n(umeric)g(constan)n(t,)g Fy(false)36 b FD(otherwise.)515 3772 y FC(in)m(t)c(lparse)p 914 3772 V 34 w(is)p 1013 3772 V 33 w(sym)m(b)s(olic\(long)e Fl(c)-5 b(onstant)8 b FC(\))750 3872 y FD(Returns)27 b Fy(true)34 b FD(if)28 b Fy(c)l(onstant)35 b FD(is)27 b(a)g(sym)n(b)r(olic)g(constan)n(t,)g Fy(false)35 b FD(otherwise.)515 4038 y FC(c)m(har)e(*lparse)p 1026 4038 V 34 w(get)p 1189 4038 V 34 w(sym)m(b)s(olic)p 1589 4038 V 32 w(constan)m(t)p 1972 4038 V 35 w(name\(long)f Fl(symb)-5 b(olic)p 2828 4038 30 4 v 35 w(c)g(onstant)8 b FC(\))747 4138 y FD(Returns)24 b(a)h(p)r(oin)n(ter)f(to)g(the)h(sym)n (b)r(ol)f(table)h(en)n(try)f(of)g Fy(symb)l(olic)p 2745 4138 26 4 v 32 w(c)l(onstant)32 b FD(or)24 b FB(NULL)722 4237 y FD(if)36 b(it)f(is)f(not)h(de\014ned.)59 b(As)34 b(the)h(p)r(oin)n(ter)g(is)f(to)h(the)g(actual)f(sym)n(b)r(ol)g(table,) j(don't)722 4337 y(mess)28 b(with)g(it.)515 4503 y FC(long)k(lparse)p 976 4503 29 4 v 34 w(get)p 1139 4503 V 34 w(sym)m(b)s(olic)p 1539 4503 V 32 w(constan)m(t)p 1922 4503 V 36 w(index\(c)m(har)h(*)p Fl(symb)-5 b(olic)p 2832 4503 30 4 v 35 w(c)g(onstant)8 b FC(\))749 4602 y FD(Returns)26 b(the)h FB(lparse)d FD(sym)n(b)r(olic)h(constan)n(t)h(that)h(corresp)r(onds)d(to)i(the)h(c) n(haracter)722 4702 y(string)36 b Fy(symb)l(olic)p 1274 4702 26 4 v 32 w(c)l(onstant)44 b FD(or)36 b(a)g(sp)r(ecial)g(v)-5 b(alue)36 b FB(LP)p 2431 4702 27 4 v 31 w(INVALID)p 2770 4702 V 28 w(CONSTANT)e FD(if)j(the)722 4802 y(sym)n(b)r(olic)27 b(constan)n(t)g(is)h(not)f(de\014ned.)1905 5255 y(53)p eop %%Page: 54 58 54 57 bop 515 523 a FC(in)m(t)32 b(lparse)p 914 523 29 4 v 34 w(sym)m(b)s(ol)p 1245 523 V 32 w(exists\(c)m(har)h(*)p Fl(symb)-5 b(olic)p 2158 523 30 4 v 35 w(c)g(onstant)8 b FC(\))753 623 y FD(Returns)31 b Fy(true)36 b FD(if)31 b Fy(symb)l(olic)p 1640 623 26 4 v 32 w(c)l(onstant)38 b FD(is)31 b(de\014ned)g(as)f(a)g(sym)n(b)r(olic)g(constan)n(t)g(and) 722 722 y Fy(false)35 b FD(otherwise.)515 888 y FC(long)d(lparse)p 976 888 29 4 v 34 w(create)p 1262 888 V 35 w(new)p 1463 888 V 34 w(sym)m(b)s(olic)p 1863 888 V 33 w(constan)m(t\(c)m(har)i(*)p Fl(new)p 2705 888 30 4 v 35 w(string)9 b FC(\))756 988 y FD(The)33 b(function)h(stores)f(its)g(argumen)n(t)g(in)n(to)g(the)h (sym)n(b)r(ol)e(table)i(and)f(returns)g(its)722 1088 y(sym)n(b)r(olic)22 b(constan)n(t)g(index)h(v)-5 b(alue.)35 b(It)23 b(is)g(safe)f(to)g(add)h(same)f(constan)n(t)g(man)n(y)g(times) 722 1187 y(to)28 b(the)g(table)f(and)h(all)f(calls)g(will)h(return)f (the)h(same)f(v)-5 b(alue.)515 1370 y FC(Example)30 b(5.5)722 1536 y FD(The)20 b(follo)n(wing)e(co)r(de)h(can)h(b)r(e)f(used)h(to)f (iden)n(tify)h(whether)f(a)g(constan)n(t)g(is)h(a)f(sym)n(b)r(olic)722 1636 y(function)31 b(\(this)g(example)f(can)g(also)f(b)r(e)i(found)g (in)g(the)f FB(lib)g FD(directory)f(of)36 b FB(lparse)722 1735 y FD(distribution\):)929 1860 y Fy(/)7 b Fz(\003)63 b Fy(a)12 b(p)g(i)g(t)g(e)g(s)g(t)36 b(.)20 b(c)42 b Fz(\000)r(\000)36 b Fy(a)64 b(s)9 b(m)g(a)g(l)g(l)75 b(e)7 b(x)g(a)g(m)g(p)g(l)g(e)64 b(o)s(n)1073 1959 y(h)r(o)r(w)e(t)8 b(h)g(e)78 b(l)11 b(p)g(a)g(r)g(s)g(e)71 b(API)54 b(c)t(a)t(n)66 b(b)6 b(e)68 b(u)7 b(s)g(e)g(d)56 b Fz(\003)7 b Fy(/)912 2159 y FC(#)-15 b(i)6 b(n)g(c)g(l)g(u)g(d)g(e)61 b FD(")15 b(l)c(p)g(a)g(r)g(s)g(e)28 b(.)20 b(h)5 b(")912 2258 y FC(#)-15 b(i)6 b(n)g(c)g(l)g(u)g(d)g(e)39 b Fx(<)15 b FD(s)c(t)g(r)g(i)g(n)g(g)32 b(.)20 b(h)m Fx(>)929 2457 y Fy(/)7 b Fz(\003)57 b Fy(T)6 b(h)g(i)g(s)75 b(f)10 b(u)g(n)g(c)g(t)g(i)g(o)g(n)81 b(r)10 b(e)g(t)g(u)g(r)g(n)g(s)75 b(t)8 b(h)g(e)76 b(c)9 b(o)g(n)g(s)g(t)g(a)g(n)g(t)73 b(')31 b(t)9 b(r)g(u)g(e)29 b(')75 b(i)12 b(f)1083 2557 y(i)g(t)g(s)91 b(f)15 b(i)g(r)f(s)h(t)84 b(a)6 b(r)g(g)g(u)g(m)g(e)g(n) g(t)70 b(i)10 b(s)72 b(a)65 b(s)9 b(y)g(m)g(b)g(o)g(l)g(i)g(c)80 b(f)10 b(u)g(n)g(c)g(t)g(i)g(o)g(n)29 b(,)1075 2657 y(a)t(n)t(d)58 b(')36 b(f)13 b(a)g(l)g(s)g(e)35 b(')74 b(o)10 b(t)g(h)g(e)g(r)g(w)g(i) g(s)g(e)65 b Fz(\003)7 b Fy(/)926 2756 y FC(l)t(o)t(n)t(g)69 b FD(i)12 b(s)p 1268 2756 25 4 v 54 w(s)g(y)g(m)g(b)g(o)g(l)g(i)g(c)p 1723 2756 V 54 w(f)g(u)g(n)g(c)g(t)g(i)g(o)g(n)32 b(\()18 b FC(i)7 b(n)g(t)70 b FD(n)8 b(a)g(r)g(g)g(s)25 b(,)69 b FC(l)t(o)t(n)t(g)50 b Fz(\003)23 b FD(a)8 b(r)g(g)g(s)23 b(\))924 2856 y Fz(f)1024 2956 y FC(c)s(h)s(a)s(r)50 b Fz(\003)24 b FD(s)9 b(t)63 b(=)46 b(0)9 b(;)1032 3055 y FC(i)i(f)69 b FD(\()33 b(l)13 b(p)g(a)g(r)g(s)g(e)p 1526 3055 V 52 w(i)g(s)p 1650 3055 V 54 w(s)g(y)g(m)g(b)g(o)g(l)g(i)g (c)28 b(\()20 b(a)8 b(r)g(g)g(s)31 b([)14 b(0)g(])g(\))h(\))56 b Fz(f)1129 3155 y FD(s)9 b(t)57 b(=)f(l)11 b(p)g(a)g(r)g(s)g(e)p 1664 3155 V 50 w(g)g(e)g(t)p 1848 3155 V 51 w(s)g(y)g(m)g(b)g(o)g(l)g (i)g(c)p 2292 3155 V 50 w(c)g(o)g(n)g(s)g(t)g(a)g(n)g(t)p 2730 3155 V 51 w(n)g(a)g(m)g(e)27 b(\()20 b(a)8 b(r)g(g)g(s)32 b([)15 b(0)g(])g(\))g(;)1128 3354 y Fy(/)7 b Fz(\003)60 b Fy(s)9 b(u)g(p)g(p)g(o)g(s)g(e)g(s)75 b(t)10 b(h)g(a)g(t)79 b(t)10 b(h)g(e)g(r)g(e)79 b(i)10 b(s)72 b(a)65 b(')16 b(\()f(')82 b(i)7 b(n)66 b(a)e(c)9 b(o)g(n)g(s)g(t)g(a)g(n)g(t)78 b(o)8 b(n)g(l)g(y)1282 3454 y(i)k(f)87 b(i)12 b(t)85 b(a)12 b(c)g(t)g(u)g(a)g(l)g(l)g(y)86 b(i)10 b(s)72 b(a)65 b(s)9 b(y)g(m)g(b)g(o)g(l)g(i)g(c)80 b(f)10 b(u)g(n)g(c)g(t)g(i)g(o)g (n)65 b Fz(\003)7 b Fy(/)1132 3553 y FC(i)k(f)69 b FD(\()33 b(s)13 b(t)g(r)g(s)g(t)g(r)31 b(\()20 b(s)9 b(t)30 b(,)71 b(")7 b(\()g(")23 b(\))11 b(\))50 b Fz(f)1225 3653 y FC(r)t(e)t(t)t(u)t(r)t(n)71 b FD(l)11 b(p)g(a)g(r)g(s)g(e)p 1867 3653 V 54 w(c)g(r)g(e)g(a)g(t)g(e)p 2195 3653 V 54 w(n)g(e)g(w)p 2414 3653 V 54 w(s)g(y)g(m)g(b)g(o)g(l)g(i)g(c)p 2863 3653 V 56 w(c)g(o)g(n)g(s)g(t)g(a)g(n)g(t)31 b(\()15 b(")f(t)9 b(r)g(u)g(e)18 b(")e(\))11 b(;)1124 3753 y Fz(g)1024 3852 y(g)1025 3952 y FC(r)t(e)t(t)t(u)t(r)t(n)71 b FD(l)11 b(p)g(a)g(r)g(s)g(e)p 1668 3952 V 55 w(c)g(r)g(e)g(a)g(t)g(e) p 1995 3952 V 54 w(n)g(e)g(w)p 2214 3952 V 54 w(s)g(y)g(m)g(b)g(o)g(l)g (i)g(c)p 2664 3952 V 55 w(c)g(o)g(n)g(s)g(t)g(a)g(n)g(t)32 b(\()15 b(")j(f)13 b(a)g(l)g(s)g(e)27 b(")16 b(\))11 b(;)924 4051 y Fz(g)722 4209 y FD(Supp)r(osing)18 b(that)h(the)g(ab)r (o)n(v)n(e)e(function)i(w)n(as)e(compiled)i(and)f(link)n(ed)g(to)g FB(liblparse.so)p FD(.)722 4309 y(Then,)28 b(the)g(follo)n(wing)f (program)722 4508 y FC(Program)k(5.1)905 4624 y FB(function)40 b(is)p 1390 4624 27 4 v 31 w(symbolic)p 1773 4624 V 28 w(function.)905 4724 y(a\(is)p 1086 4724 V 30 w(symbolic)p 1468 4724 V 28 w(function\(1\)\).)905 4824 y(b\(is)p 1086 4824 V 30 w(symbolic)p 1468 4824 V 28 w(function\(foo\(1\)\))o (\).)905 4923 y(c\(is)p 1086 4923 V 30 w(symbolic)p 1468 4923 V 28 w(function\(bar\)\).)1905 5255 y FD(54)p eop %%Page: 55 59 55 58 bop 1439 581 a FD(T)-7 b(able)27 b(5.3:)36 b FB(Lparse)25 b FD(k)n(eyw)n(ords)p 1499 694 897 4 v 1497 793 4 100 v 1570 764 a FB(compute)p 1945 793 V 184 w(const)p 2394 793 V 1497 893 V 1548 863 a(external)p 1945 893 V 97 w(function)p 2394 893 V 1497 993 V 1636 963 a(hide)p 1945 993 V 185 w(maximize)p 2394 993 V 1497 1092 V 1548 1062 a(minimize)p 1945 1092 V 206 w(mod)p 2394 1092 V 1497 1192 V 1657 1162 a(not)p 1945 1192 V 295 w(show)p 2394 1192 V 1497 1292 V 1592 1262 a(weight)p 1945 1292 V 2394 1292 V 1499 1295 897 4 v 722 1627 a FD(giv)n(es)i(the)h(follo)n (wing)e(output:)905 1776 y FB(smodels)41 b(version)f(2.23.)85 b(Reading...done)905 1876 y(Answer:)f(1)905 1976 y(Stable)41 b(Model:)85 b(c\(false\))40 b(b\(true\))h(a\(false\))905 2075 y(True)3324 2192 y Fi(\006)515 2466 y FA(5.8)135 b(Keyw)l(ords)515 2648 y FB(Lparse)31 b FD(has)i(a)h(set)g(of)f(k)n (eyw)n(ords)f(that)i(ma)n(y)f(not)h(b)r(e)g(used)g(for)f(other)g(purp)r (oses.)55 b(The)515 2748 y(k)n(eyw)n(ords)24 b(are)h(sho)n(wn)g(in)i(T) -7 b(able)26 b(5.3.)35 b(In)27 b(addition)f(to)g(k)n(eyw)n(ords)e FB(lparse)g FD(uses)i(in)n(ternal)515 2847 y(atoms,)41 b(predicates,)h(and)d(v)-5 b(ariables.)71 b(The)39 b(names)g(of)g(the)h (in)n(ternal)f(predicates)f(and)515 2947 y(atoms)28 b(start)g(with)h (an)f(underscore)f(\()p 1721 2947 27 4 v 31 w(\).)40 b(The)29 b(names)f(of)h(in)n(ternal)e(v)-5 b(ariables)28 b(start)g(with)515 3046 y FB(I)p 564 3046 V 31 w FD(.)48 b(Y)-7 b(ou)31 b(should)g(a)n(v)n(oid)f(using)h(the)g(in)n(ternal)g (sym)n(b)r(ols)g(in)g(y)n(our)f(programs,)g(or)g(strange)515 3146 y(b)r(eha)n(vior)c(ma)n(y)h(result.)1905 5255 y(55)p eop %%Page: 56 60 56 59 bop 515 1146 a Fw(Chapter)64 b(6)515 1561 y FE(Examples)515 1993 y FD(The)37 b(source)e(co)r(de)i(of)f(all)h(examples)f(in)h(this)g (c)n(hapter)f(is)h(included)g(in)g(the)g FB(examples)515 2092 y FD(directory)21 b(of)i(lparse)f(tarball.)34 b(More)22 b(examples)g(can)g(b)r(e)i(found)f(from)f FB(lparse-demo.tgz)515 2192 y FD(whic)n(h)27 b(is)h(a)n(v)-5 b(ailable)26 b(at)1042 2358 y FB(http://www.tcs.h)o(ut)o(.fi)o(/p)o(ub)o(/sm)o(od)o(els)o(/l)o (par)o(se)o(/)p FD(.)515 2632 y FA(6.1)135 b(No)t(de)45 b(Coloring)515 2814 y FC(Program)31 b(6.1)722 2930 y FB(\045)43 b(Node)f(coloring)f(problem)f(by)j(Tommi)f(Syrj\177)-44 b(anen.)722 3030 y(\045)43 b(Given)f(a)h(graph)f(given)f(as)i(a)g(set)f (of)h(nodes)f(and)g(edges)722 3130 y(\045)h(find)f(a)i(way)e(to)h (color)e(the)i(nodes)e(with)h('n')g(colors)f(such)h(that)722 3229 y(\045)h(two)g(adjacent)d(nodes)i(are)g(not)g(colored)f(with)h (the)g(same)g(color.)722 3329 y(const)g(n=3.)85 b(\045)43 b(this)f(can)h(be)g(changed)d(with)i(the)1245 3429 y(\045command)f (line)h(argument)e('-c'.)722 3528 y(color\(1..n\).)722 3628 y(\045)j(Each)f(node)g(should)f(have)h(exactly)f(one)h(color:)722 3727 y(1)h Fz(f)h FB(node)p 1076 3727 27 4 v 29 w(color\(N,)d(C\))h(:)h (color\(C\))e Fz(g)i FB(1)g(:-)g(node\(N\).)722 3827 y(\045)g(Two)g(adjacent)d(nodes)i(have)g(to)g(have)g(different)e (colors:)766 3927 y(:-)j(node)p 1078 3927 V 29 w(color\(X,)e(C\),)h (node)p 1850 3927 V 30 w(color\(Y,C\),)d(edge\(X,Y\),)g(color\(C\).)722 4026 y(\045)k(Typical)e(command)g(line)722 4126 y(\045)i(lparse)f(-d)g (none)g(-c)h(n=3)f(color2.lp)e(graph)i(|)h(smodels)515 4401 y FA(6.2)135 b(Logical)46 b(Puzzles)515 4582 y FD(The)23 b FB(example/puzzle)17 b FD(directory)k(con)n(tains)h(a)g(couple)h Fv(Smodels)f FD(programs)e(that)j(solv)n(e)515 4682 y(logical)k (puzzles)h(that)g(are)g(tak)n(en)f(from)h(Ra)n(ymond)g(Sm)n(ully)n (an's)f(excellen)n(t)h Fy(F)-6 b(or)l(ever)31 b(Un-)515 4782 y(de)l(cide)l(d)38 b FD([17)o(].)f(All)28 b(follo)n(wing)f (programs)e(should)i(b)r(e)h(run)g(with)g(the)g(command)f(line)722 4898 y FB(\045)43 b(lparse)f Fm(file)56 b FB(|)43 b(smodels)e(0)515 4997 y FD(so)27 b(that)h(all)f(p)r(ossible)g(answ)n(ers)f(are)h (generated.)1905 5255 y(56)p eop %%Page: 57 61 57 60 bop 515 523 a FC(Knigh)m(ts)31 b(and)h(Kna)m(v)m(es)722 623 y FD(The)d(Island)f(of)g(Knigh)n(ts)f(and)h(Kna)n(v)n(es)f(has)h(t) n(w)n(o)f(t)n(yp)r(es)h(of)h(inhabitan)n(ts:)38 b(knigh)n(ts,)722 722 y(who)28 b(alw)n(a)n(ys)d(tell)j(the)g(truth,)g(and)g(kna)n(v)n (es,)e(who)h(alw)n(a)n(ys)f(lie.)722 852 y(One)38 b(da)n(y)-7 b(,)41 b(three)d(inhabitan)n(ts)h(\()p Fx(A)p FD(,)i Fx(B)t FD(,)h(and)c Fx(C)6 b FD(\))39 b(of)g(the)g(island)f(met)h(a)f (foreign)722 952 y(tourist)27 b(and)h(ga)n(v)n(e)e(the)i(follo)n(wing)e (information)h(ab)r(out)h(themselv)n(es:)799 1111 y(1.)41 b(A)28 b(said)f(that)h(B)f(and)h(C)f(are)g(b)r(oth)h(knigh)n(ts.)799 1238 y(2.)41 b(B)27 b(said)h(that)f(A)h(is)g(a)f(kna)n(v)n(e)f(and)i(C) f(is)h(a)f(knigh)n(t.)722 1398 y(What)h(t)n(yp)r(es)g(are)e(A,)i(B,)g (and)f(C?)722 1528 y(This)h(logical)e(puzzle)i(can)f(b)r(e)h(solv)n(ed) f(with)h(the)g(follo)n(wing)e(program:)722 1711 y FC(Program)31 b(6.2)905 1828 y FB(\045)43 b(Each)f(person)f(is)i(either)e(a)i(knight) e(or)i(a)g(knave)905 1927 y(1)g Fz(f)g FB(knight\(P\),)d(knave\(P\))g Fz(g)j FB(1)g(:-)g(person\(P\).)905 2126 y(\045)g(There)f(are)g(three)f (persons)g(in)i(this)f(puzzle:)905 2226 y(person\(a)e(;)j(b)h(;)f(c\).) 905 2425 y(\045)g(Rest)f(of)h(this)f(program)e(models)i(the)g(two)g (hints.)905 2525 y(\045)h(Hint)f(1:)905 2625 y(\045)h(If)g(A)g(tells)f (the)g(truth,)f(B)i(and)g(C)g(are)f(both)g(knights)905 2724 y(2)h Fz(f)g FB(knight\(b\),)d(knight\(c\))g Fz(g)j FB(2)g(:-)g(knight\(a\).)905 2923 y(\045)g(If)g(A)g(lies,)f(both)f (cannot)h(be)g(knights.)949 3023 y(:-)g(knave\(a\),)e(knight\(b\),)g (knight\(c\).)905 3222 y(\045)j(Hint)f(2:)905 3322 y(\045)h(If)g(B)g (tells)f(the)g(truth,)f(A)i(is)g(a)g(knave)f(and)g(B)h(is)g(a)g(knight) 905 3422 y(2)g Fz(f)g FB(knave\(a\),)d(knight\(c\))g Fz(g)j FB(2)g(:-)g(knight\(b\).)905 3621 y(\045)g(If)g(B)g(lies,)f(one) g(of)h(the)f(claims)f(has)h(to)h(be)g(false)949 3720 y(:-)f(knave\(b\),)e(knave\(a\),)g(knight\(c\).)515 3880 y FC(Martian-V)-8 b(en)m(usian)32 b(Club,)f(part)i(1)722 3980 y FD(On)i(Gan)n(ymede)f(|)h(a)f(satellite)h(of)g(Jupiter)f(|)h (there)g(is)f(a)g(club)i(kno)n(wn)e(as)g(the)722 4079 y(Martian-V)-7 b(en)n(usian)20 b(Club.)36 b(All)21 b(mem)n(b)r(ers)h (are)e(either)i(from)f(Mars)f(or)h(from)g(V)-7 b(en)n(us,)722 4179 y(although)34 b(visitors)g(are)f(sometimes)h(allo)n(w)n(ed.)57 b(An)35 b(earthling)f(is)g(unable)h(to)f(dis-)722 4279 y(tinguish)g(Martians)e(from)i(V)-7 b(enetians)33 b(b)n(y)h(their)f (app)r(earance.)53 b(Also,)35 b(earthlings)722 4378 y(cannot)c (distinguish)g(either)g(Martian)g(or)f(V)-7 b(en)n(usian)31 b(males)g(from)f(females,)i(since)722 4478 y(they)e(dress)f(alik)n(e.) 42 b(Logicians,)29 b(ho)n(w)n(ev)n(er,)f(ha)n(v)n(e)g(an)i(adv)-5 b(an)n(tage,)29 b(since)g(the)h(V)-7 b(en)n(u-)722 4578 y(sian)31 b(w)n(omen)f(alw)n(a)n(ys)g(tell)h(the)g(truth)h(and)f(the)g (V)-7 b(en)n(usian)31 b(men)g(alw)n(a)n(ys)f(lie.)47 b(The)722 4677 y(martians)21 b(are)g(the)h(opp)r(osite;)h(the)f (Martian)f(men)h(tell)g(the)g(truth)g(and)g(the)g(Martian)722 4777 y(w)n(omen)27 b(alw)n(a)n(ys)f(lie.)722 4907 y(One)32 b(da)n(y)g(a)g(visitor)f(met)i(t)n(w)n(o)f(Club)g(mem)n(b)r(ers,)i(Ork) d(and)h(Bog,)h(who)f(made)g(the)722 5006 y(follo)n(wing)27 b(statemen)n(ts:)1905 5255 y(57)p eop %%Page: 58 62 58 61 bop 799 523 a FD(1.)41 b(Ork:)36 b(Bog)26 b(is)i(from)f(V)-7 b(en)n(us.)799 656 y(2.)41 b(Bog:)36 b(Ork)26 b(is)i(from)f(Mars.)799 789 y(3.)41 b(Ork:)36 b(Bog)26 b(is)i(male.)799 922 y(4.)41 b(Bog:)36 b(Ork)26 b(is)i(female.)722 1088 y(Where)g(are)e(Ork)h(and)g (Bog)g(from,)g(and)h(are)e(they)i(male)f(or)g(female?)722 1303 y FC(Program)k(6.3)905 1420 y FB(\045)43 b(All)f(persons)f(are)h (from)g(Mars)g(or)h(Venus)905 1519 y(1)g Fz(f)g FB(martian\(P\),)c (venetian\(P\))g Fz(g)k FB(1)h(:-)e(person\(P\).)905 1719 y(\045)h(All)f(persons)f(are)h(male)g(or)h(female)905 1818 y(1)g Fz(f)g FB(female\(P\),)d(male\(P\))g Fz(g)j FB(1)h(:-)e(person\(P\).)905 2017 y(\045)h(All)f(persons)f(either)g (lie)i(or)f(tell)g(the)h(truth)e(depending)f(on)905 2117 y(\045)j(their)f(origins)e(and)j(sex.)905 2217 y(lies\(P\))e(:-)h (person\(P\),)e(martian\(P\),)f(female\(P\).)905 2316 y(lies\(P\))i(:-)h(person\(P\),)e(venetian\(P\),)e(male\(P\).)905 2416 y(truthful\(P\))h(:-)k(person\(P\),)c(martian\(P\),)g(male\(P\).) 905 2516 y(truthful\(P\))g(:-)k(person\(P\),)c(venetian\(P\),)g (female\(P\).)905 2715 y(\045)k(A)g(person)e(may)i(not)f(tell)g(the)g (truth)g(and)g(lie)h(at)f(the)905 2814 y(\045)h(same)f(time)949 2914 y(:-)g(person\(P\),)e(lies\(P\),)g(truthful\(P\).)905 3113 y(\045)j(Persons:)905 3213 y(person\()e(ork;)h(bog)g(\).)905 3412 y(\045)h(Hints)905 3512 y(\045)g(1.)905 3611 y(venetian\(bog\))38 b(:-)43 b(truthful\(ork\).)949 3711 y(:-)f(lies\(ork\),)e (venetian\(bog\).)905 3910 y(\045)j(2.)905 4010 y(martian\(ork\))c(:-)j (truthful\(bog\).)949 4110 y(:-)g(lies\(bog\),)e(martian\(ork\).)905 4309 y(\045)j(3.)905 4408 y(male\(bog\))d(:-)j(truthful\(ork\).)949 4508 y(:-)f(lies\(ork\),)e(male\(bog\).)905 4707 y(\045)j(4.)905 4807 y(female\(ork\))c(:-)k(truthful\(bog\).)949 4907 y(:-)f(lies\(bog\),)e(female\(ork\).)1905 5255 y FD(58)p eop %%Page: 59 63 59 62 bop 515 523 a FC(Martian-V)-8 b(en)m(usian)32 b(Club,)f(part)i(2) 722 623 y FD(The)g(Martians)e(and)i(the)f(V)-7 b(enetians)33 b(often)g(in)n(termarry)-7 b(,)32 b(and)g(there)g(are)g(sev)n(eral)722 722 y(mixed)37 b(couples)f(in)h(the)g(club.)64 b(One)36 b(couple)g(approac)n(hed)f(the)i(visitor)e(and)i(the)722 822 y(follo)n(wing)27 b(con)n(v)n(ersation)e(ensued:)799 988 y(1.)41 b(Visitor:)36 b(Where)28 b(are)e(y)n(ou)h(from?)799 1121 y(2.)41 b(A:)28 b(F)-7 b(rom)27 b(Mars.)799 1254 y(3.)41 b(B:)27 b(That's)h(not)f(true!)722 1420 y(W)-7 b(as)28 b(the)g(couple)f(mixed)h(or)e(not?)722 1553 y(The)39 b(program)d(to)j(solv)n(e)e(this)i(one)f(uses)h(the)g(same)f(basic)g (foundations)g(as)g(the)722 1652 y(puzzle)28 b(ab)r(o)n(v)n(e)e(and)i (b)r(elo)n(w)f(only)g(the)h(c)n(hanged)f(parts)f(are)h(sho)n(wn.)722 1851 y FC(Program)k(6.4)905 1968 y FB(\045)43 b(Persons:)905 2067 y(person\()e(a;)h(b)i(\).)905 2267 y(\045)f(The)f(persons)f(in)i (this)f(puzzle)f(are)h(married)f(so)i(they)f(can't)905 2366 y(\045)h(have)f(the)g(same)g(sex.)949 2466 y(:-)g(male\(a\),)f (male\(b\).)949 2565 y(:-)h(female\(a\),)e(female\(b\).)905 2765 y(\045)j(The)f(hints.)905 2864 y(\045)h(1.)905 2964 y(martian\(a\))c(:-)k(truthful\(a\).)949 3064 y(:-)f(martian\(a\),)d (lies\(a\).)905 3263 y(\045)k(2.)905 3362 y(lies\(a\))e(:-)h (truthful\(b\).)949 3462 y(:-)g(lies\(a\),)f(lies\(b\).)515 3737 y FA(6.3)135 b(Planning)515 3918 y FD(The)27 b(largest)f(example)h (program)e(in)j(the)g FB(example)c FD(directory)i(is)i FB(logistics.lp)22 b FD(whic)n(h)515 4018 y(sho)n(ws)h(a)h(w)n(a)n(y)g (to)g(enco)r(de)g(planning)g(problems)g(as)g Fv(Smodels)g FD(programs.)34 b(The)24 b(program)515 4118 y(is)g(to)r(o)g(big)h(to)f (b)r(e)h(included)g(in)f(this)h(man)n(ual)f(en)n(tirely)g(but)h(here)f (are)f(some)h(selected)h(bits.)639 4217 y(In)i(a)f(planning)g(problem,) g(w)n(e)g(are)g(giv)n(en)f(a)h(descriptions)g(of)h(the)f(initial)h (state)f(of)h(the)515 4317 y(w)n(orld)e(and)h(the)g(desired)g(goal)f (state.)36 b(In)26 b(addition,)g(w)n(e)g(are)f(giv)n(en)h(a)f(set)h(of) g(actions)g(that)515 4417 y(can)h(b)r(e)h(used)g(to)f(c)n(hange)f(the)i (state)g(of)f(w)n(orld.)639 4516 y(In)f(logistics)f(domain,)h(w)n(e)f (ha)n(v)n(e)g(an)g(action)h FB(load)p 2223 4516 27 4 v 29 w(truck\(Object,)39 b(Truck\))23 b FD(that)j(is)515 4616 y(used,)h(naturally)g(enough,)g(to)g(load)g(pac)n(k)-5 b(ages)26 b(in)n(to)h(truc)n(ks.)36 b(The)28 b(precondition)f(for)g (this)515 4715 y(op)r(eration)k(is)i(that)f(the)h(ob)5 b(ject)33 b(and)f(truc)n(k)g(are)g(at)g(the)h(same)f(place)g(and)g(the) h(e\013ect)g(is)515 4815 y(that)28 b(the)g(pac)n(k)-5 b(age)26 b(will)h(b)r(e)h(inside)g(the)g(truc)n(k.)1905 5255 y(59)p eop %%Page: 60 64 60 63 bop 639 523 a FD(The)27 b(\014rst)g(step)g(in)h(con)n(v)n(erting) d(the)i(action)g(to)g(smo)r(dels)f(rules)h(is)g(to)g(add)f(a)h(third)g (ar-)515 623 y(gumen)n(t)d(to)g(it,)h(namely)e(time,)j(to)e(it.)36 b(Th)n(us)24 b(w)n(e'll)f(use)h(predicate)g FB(load)p 2788 623 27 4 v 29 w(truck\(Object,)515 722 y(Truck,)41 b(Time\))25 b FD(to)j(mo)r(del)g(the)g(loading.)639 822 y(A)g(natural)f(w)n(a)n(y)f(to)i(enco)r(de)f(actions)g(is)h(to)f(use)g (c)n(hoice)g(rules,)g(in)h(form:)722 938 y Fz(f)43 b FB(action)e Fz(g)j FB(:-)e(preconditions.)639 1038 y FD(If)31 b(the)f(b)r(o)r(dy)h(of)f(a)g(c)n(hoice)f(rule)h(is)g(true)g (in)h(a)e(mo)r(del,)i(the)g(head)f(ma)n(y)f(b)r(e)i(true)f(in)h(it,)515 1137 y(but)c(it)g(do)r(esn't)g(ha)n(v)n(e)f(to.)37 b(Th)n(us,)26 b(when)h(the)h(preconditions)e(are)g(ful\014lled)h(w)n(e)g(can)f (either)515 1237 y(p)r(erform)h(the)h(action)f(or)g(decide)g(to)h(do)f (some)g(other)g(action.)639 1337 y(The)h(e\013ects)g(of)f(an)h(action)f (are)f(implied)i(b)n(y)g(the)g(action:)722 1453 y FB(effects)41 b(:-)i(action.)639 1553 y FD(The)28 b(blo)r(c)n(king)f(of)h (con\015icting)g(actions)f(is)h(done)g(b)n(y)f(adding)h(a)f(constrain)n (t)g(that)h(sa)n(ys)515 1652 y(that)c(if)g(an)g(action)f(do)r(esn't)h (c)n(hange)f(its)h(o)n(wn)g(precondition,)g(then)g(the)g(precondition)g (has)515 1752 y(to)j(hold)h(also)e(at)i(the)g(next)f(instan)n(t:)722 1868 y FB(precondition\(I+1\))37 b(:-)43 b(action,)d (precondition\(I\).)639 1968 y FD(Using)28 b(these)f(guidelines)h(w)n (e)f(can)g(enco)r(de)g FB(load)p 2198 1968 V 30 w(truck)f FD(with)i(follo)n(wing)e(rules:)515 2134 y FC(Program)31 b(6.5)722 2250 y Fz(f)43 b FB(load)p 988 2250 V 30 w(truck\(Obj,)d(Tr,) i(I\))h Fz(g)g FB(:-)853 2350 y(at\(Obj,)e(Loc,)h(I\),)853 2449 y(at\(Tr,)f(Loc,)h(I\),)853 2549 y(object\(Obj\),)853 2648 y(truck\(Tr\),)853 2748 y(location\(Loc\),)853 2848 y(time\(I\).)722 2947 y(\045Effects:)722 3047 y(in\(Obj,)f(Tr,)h(I+1\)) g(:-)853 3147 y(load)p 1034 3147 V 30 w(truck\(Obj,)d(Tr,)k(I\),)853 3246 y(truck\(Tr\),)853 3346 y(object\(Obj\),)853 3445 y(time\(I\).)722 3545 y(changes\(Obj,)c(I\))k(:-)853 3645 y(load)p 1034 3645 V 30 w(truck\(Obj,)c(Tr,)k(I\),)853 3744 y(truck\(Tr\),)853 3844 y(object\(Obj\),)853 3944 y(time\(I\).)722 4043 y(\045)g(As)g(one)g(of)f(the)h(preconditions)38 b(for)k(load)p 2385 4043 V 30 w(truck\(Obj,)d(Tr,)k(I\))f(is)722 4143 y(\045)h(at\(Tr,)f(Loc,)f(I\))i(and)g(the)f(operator)e(doesn't)h (change)g(it,)h(the)722 4242 y(\045)h(truck)f(has)g(to)h(be)g(at)g(the) f(same)g(place)f(at)i(the)f(next)g(instant.)722 4342 y(at\(Tr,)f(Loc,)h(I+1\))g(:-)853 4442 y(load)p 1034 4442 V 30 w(truck\(Obj,)d(Tr,)k(I\),)853 4541 y(at\(Tr,)e(Loc,)h(I\),) 853 4641 y(location\(Loc\),)853 4741 y(truck\(Tr\),)853 4840 y(object\(Obj\),)853 4940 y(time\(I\).)1905 5255 y FD(60)p eop %%Page: 61 65 61 64 bop 515 523 a FD(In)29 b(addition)g(to)g(the)h(op)r(erators)d(w)n (e)i(also)f(need)i(a)f(set)g(of)g(frame)g(axioms)f(that)i(tak)n(e)e (care)515 623 y(of)i(those)h(parts)f(of)g(the)h(w)n(orld)f(that)h(do)r (esn't)g(c)n(hange)e(at)i(an)f(time)h(step)g(and)g(that)g(k)n(eep)515 722 y(the)d(system)f(in)h(consisten)n(t)f(state:)515 888 y FC(Program)k(6.6)722 1005 y FB(\045)43 b(FRAME)f(AXIOMS)722 1104 y(\045)h(Everything)d(stays)h(at)i(the)g(same)e(place)h(where)f (it)i(is)g(unless)722 1204 y(\045)g(some)f(action)f(moves)h(it.)722 1303 y(at\(Obj,)f(Loc,)h(I+1\))g(:-)853 1403 y(at\(Obj,)f(Loc,)h(I\),) 853 1503 y(not)g(changes\(Obj,)d(I\),)853 1602 y(object\(Obj\),)853 1702 y(location\(Loc\),)853 1802 y(time\(I\).)722 1901 y(\045)k(An)g(object)e(may)i(not)f(be)h(in)g(two)f(places)f(at)i(the)f (same)g(time)766 2001 y(:-)h(2)g Fz(f)g FB(at\(Obj,)e(Loc,)h(I\))g(:)h (location\(Loc\),)853 2100 y(in\(Obj,)e(Cont,)g(I\))i(:)g (container\(Cont\))38 b Fz(g)p FB(,)853 2200 y(object\(Obj\),)853 2300 y(time\(I\).)1905 5255 y FD(61)p eop %%Page: 62 66 62 65 bop 515 1146 a Fw(Chapter)64 b(7)515 1561 y FE(W)-19 b(riting)77 b(Smo)6 b(dels)77 b(Programs)515 1993 y FD(This)22 b(c)n(hapter)f(con)n(tains)g(some)g(miscellaneous)g(topics)g(on)h (writing)f(programs)f(for)h Fv(Smod-)515 2092 y(els)p FD(.)35 b(The)21 b(\014rst)g(section)h(detains)f(the)h(op)r(eration)e (of)i(an)f(Emacs)f(ma)5 b(jor-mo)r(de)20 b(for)h(writing)515 2192 y Fv(Smodels)f FD(co)r(de.)34 b(The)21 b(t)n(w)n(o)f(follo)n(wing) f(sections)h(con)n(tain)g(some)g(tips)h(for)f(debugging)g(logic)515 2291 y(programs)25 b(and)i(using)h(parser)e(w)n(arnings.)515 2566 y FA(7.1)135 b(Editing)46 b(Smo)t(dels)f(Programs)h(with)f(Emacs) 515 2748 y FD(There)33 b(is)g(a)g(ma)5 b(jor-mo)r(de)32 b(for)i(writing)g Fv(Smodels)f FD(programs)e(with)j(Emacs.)54 b(It)34 b(is)f(de-)515 2847 y(\014ned)27 b(in)h(\014le)f FB(smodels-mode.el)21 b FD(whic)n(h)28 b(is)f(lo)r(cated)g(in)n(t)g (the)h FB(lib)e FD(directory)g(of)33 b FB(lparse)515 2947 y FD(distribution.)639 3047 y(T)-7 b(o)35 b(use)f(the)i(mo)r(de)e (y)n(ou)h(ha)n(v)n(e)e(to)i(cop)n(y)g FB(smodels-mode.el)29 b FD(in)n(to)34 b(some)g(directory)515 3146 y(that)g(is)f(men)n(tioned) g(in)h(y)n(our)e FB(load-path)e FD(Emacs)j(v)-5 b(ariable)32 b(and)i(add)f(a)g(command)g(to)515 3246 y(load)27 b(the)h(mo)r(de)f (when)h(needed.)639 3346 y(F)-7 b(or)32 b(example,)h(supp)r(ose)f(that) g(y)n(ou)g(w)n(an)n(t)g(to)g(use)g(the)g(directory)h FB(~/.elisp)c FD(for)i(all)515 3445 y(y)n(our)21 b(Emacs)h(Lisp)h (\014les.)35 b(Then)23 b(y)n(ou)g(could)f(cop)n(y)i FB(smodels-mode.el) 16 b FD(to)23 b(that)g(directory)515 3545 y(and)k(add)h(the)g(follo)n (wing)e(commands)h(to)h(y)n(our)e FB(.emacs)f FD(startup)i(\014le:)515 3711 y FB(;;)42 b(First)g(set)g(the)h(load)f(path)515 3810 y(\(setq)f(load-path)f(\(cons)i("~/.elisp")d(load-path\)\))515 4010 y(;;)j(Load)g(smodels-mode)d(automatically)f(when)k(needed.)515 4109 y(\(autoload)e('smodels-mode)e("smodels-mode")g("Smodels)i (Editing)h(Mode")g(t\))515 4309 y(;;)h(Use)h(smodels-mode)38 b(for)43 b(all)f(files)g(that)g(end)g(with)g(`.lp'.)515 4408 y(\(setq)f(auto-mode-alist)d(\(cons)j('\("\\\\.lp$")f(.)j (smodels-mode\))1779 4508 y(auto-mode-alist\))o(\))515 4607 y(;;)f(Turn)g(syntax)g(highlighting)c(on)43 b(automatically)515 4707 y(\(add-hook)d('smodels-mode-h)o(ook)d('turn-on-font-lo)o(ck)o(\)) 515 4873 y(Smodels-mode)15 b FD(kno)n(ws)20 b(ho)n(w)g(to)g(inden)n(t)h Fv(Smodels)f FD(programs)e(and)j(p)r(erforms)f(some)g(syn-)515 4973 y(tax)i(highligh)n(ting.)34 b(All)23 b(k)n(eyw)n(ords)e(are)g (prin)n(ted)i(with)g FB(font-lock-keywo)o(rd)o(-fa)o(ce)16 b FD(fon)n(t,)1905 5255 y(62)p eop %%Page: 63 67 63 66 bop 515 523 a FD(built-in)42 b(functions)f(with)h FB(font-lock-builtin)o(-f)o(ac)o(e)p FD(,)d(and)i(v)-5 b(ariables)40 b(with)i FB(font-)515 623 y(lock-variable-fa)o(ce)o FD(.)639 722 y(Y)-7 b(ou)20 b(can)g(also)f(run)h FB(lparse)e FD(and)i FB(smodels)d FD(pro)r(cesses)i(under)h(Emacs)f(with)h FB(smodels-)515 822 y(mode)p FD(.)63 b(Y)-7 b(ou)37 b(can)g(c)n(ho)r (ose)e(what)i(parser)f(y)n(ou)g(w)n(an)n(t)g(to)h(use)g(with)g(the)h (command)e FB(M-x)515 922 y(smodels-set-pars)o(er)o FD(.)d(By)28 b(default)h FB(lparse)d FD(is)i(used.)39 b(The)28 b(actual)g FB(smodels)e FD(v)n(ersion)515 1021 y(that)c(is)g(used)h(to)f(compute)g (the)h(mo)r(dels)f(can)g(b)r(e)g(set)h(with)f FB(M-x)43 b(smodels-set-prog)o(ra)o(m)p FD(.)515 1121 y(By)33 b(default,)i FB(smodels)c FD(is)i(used.)54 b(Y)-7 b(ou)33 b(can)g(set)h(command)f (line)g(argumen)n(ts)f(with)i FB(M-x)515 1220 y(smodels-set-pars)o(er)o (-a)o(rgu)o(me)o(nts)17 b FD(and)25 b FB(M-x)42 b(smodels-set-prog)o (ra)o(m-a)o(rg)o(ume)o(nt)o(s)p FD(.)639 1320 y(There)30 b(are)g(four)f(di\013eren)n(t)i(commands)f(that)g(can)g(b)r(e)h(used)g (to)f(start)g FB(smodels)d FD(pro-)515 1420 y(cesses:)639 1586 y Fz(\017)41 b FB(M-x)i(smodels-compute)o(-bu)o(ff)o(er)35 b FD(grounds)41 b(the)h(curren)n(t)f(bu\013er)h(with)g(c)n(hosen)722 1685 y(parser,)20 b(sends)f(the)g(results)g(to)g(a)g FB(smodels)e FD(pro)r(cess,)i(and)h(prin)n(ts)e(the)i(stable)f(mo)r (dels)722 1785 y(in)28 b(bu\013er)g FB(*smodels*)p FD(.)639 1951 y Fz(\017)41 b FB(M-x)i(smodels-compute)o(-fi)o(le)o(s)32 b FD(w)n(orks)k(lik)n(e)h FB(smodels-compute-)o(bu)o(ffe)o(r)31 b FD(but)722 2051 y(it)e(allo)n(ws)e(y)n(ou)g(to)i(pro)r(cess)e (programs)f(that)i(are)g(stored)f(in)i(m)n(ultiple)g(\014les.)39 b(When)722 2150 y(y)n(ou)28 b(use)g(this)h(function)g(the)f(\014rst)h (time)f(it)h(asks)f(what)g(\014les)g(y)n(ou)g(w)n(an)n(t)f(to)i (include)722 2250 y(with)g(the)h(run.)40 b(If)29 b(y)n(ou)f(w)n(an)n(t) g(to)g(c)n(hange)g(the)h(\014le)g(list)f(later,)h(y)n(ou)f(can)g(do)g (it)i(with)722 2350 y(command)e FB(M-x)42 b(smodels-set-file)o(-l)o (ist)o FD(.)639 2516 y Fz(\017)f FB(M-x)i(smodels-parse-b)o(uff)o(er)29 b FD(sends)35 b(the)h(curren)n(t)f(bu\013er)g(to)h(the)f(parser)f(and) 722 2615 y(displa)n(ys)f(the)g(output)h(in)g(the)g(bu\013er)f FB(*smodels*)p FD(.)51 b(By)33 b(default,)j(the)d(command)722 2715 y(displa)n(ys)g(its)h(output)h(in)f(plain)g(text)g(format)g(but)g (if)h(y)n(ou)e(include)h(an)g(argumen)n(t)722 2814 y(\(i.e.)46 b(if)31 b(y)n(ou)f(in)n(v)n(ok)n(e)f(it)i(with)g FB(C-u)42 b(M-x)g(smodels-parse-buf)o(fe)o(r)p FD(\),)26 b(the)31 b(output)722 2914 y(is)d(in)g(smo)r(dels)f(in)n(ternal)g(format.)639 3080 y Fz(\017)41 b FB(M-x)i(smodels-parse-f)o(ile)o(s)21 b FD(grounds)27 b(man)n(y)g(\014les.)639 3246 y(The)h FB(smodels-mode)23 b FD(k)n(eymap)j(binds)i(ab)r(o)n(v)n(e)e(functions) i(to)g(follo)n(wing)e(k)n(eys:)639 3412 y Fz(\017)41 b FB(C-c)i(C-b)26 b FD(is)i(binded)g(to)f FB(smodels-parse-buf)o(fe)o (r)639 3578 y Fz(\017)41 b FB(C-c)i(C-f)26 b FD(is)i(binded)g(to)f FB(smodels-parse-fil)o(es)639 3744 y Fz(\017)41 b FB(C-t)i(C-b)26 b FD(is)i(binded)g(to)f FB(smodels-compute-b)o(uf)o(fe)o(r)639 3910 y Fz(\017)41 b FB(C-t)i(C-f)26 b FD(is)i(binded)g(to)f FB(smodels-compute-f)o(il)o(es)515 4185 y FA(7.2)135 b(Debugging)46 b(Smo)t(dels)f(Programs)515 4367 y FD(So)35 b(no)n(w)f(y)n(ou)g(ha)n(v)n(e)g(written)i(a)e(large)g(logic)g (program,)h(but)h(only)f(thing)g(that)g(smo)r(dels)515 4466 y(w)n(an)n(ts)j(to)g(answ)n(er)f(is)i FB(False)p FD(.)68 b(Finding)39 b(problems)f(within)h(logic)f(programs)f(ma)n(y)h (b)r(e)515 4566 y(tedious)32 b(and)h(frustrating)f(since)g(a)h(small)f (t)n(yp)r(o)h(ma)n(y)f(ruin)g(the)h(whole)g(program.)50 b(It)33 b(is)515 4666 y(not)27 b(p)r(ossible)f(to)h(giv)n(e)f(a)g (debugging)g(pro)r(cedure)g(that)h(w)n(orks)e(ev)n(ery)h(time,)h(but)h (here)e(are)515 4765 y(some)h(things)g(that)h(I)g(ha)n(v)n(e)e(found)i (helpful.)1905 5255 y(63)p eop %%Page: 64 68 64 67 bop 639 523 a Fz(\017)41 b FD(Mak)n(e)h(sure)h(that)g(all)g (constan)n(ts)f(b)r(egin)h(with)g(a)g(lo)n(w)n(er)e(case)h(letter)h (and)g(that)722 623 y(all)37 b(v)-5 b(ariables)35 b(b)r(egin)i(with)h (an)e(upp)r(er)h(case)f(letter.)65 b(I)37 b(once)f(sp)r(en)n(t)h(a)g (couple)f(of)722 722 y(hours)27 b(searc)n(hing)f(for)h(a)g(m)n (ysterious)f(bug)h(in)h(a)f(planning)g(mo)r(del)h(that)g(seemed)f(to) 722 822 y(come)32 b(and)g(go.)50 b(The)32 b(cause)g(for)g(the)g(bug)g (w)n(as)g(that)g(in)h(one)f(rule)f(I)i(had)f(written)722 922 y FB(at\(tr,)41 b(Loc,)h(I\))33 b FD(instead)h(of)40 b FB(at\(Tr,)h(Loc,)h(I\))p FD(.)33 b(When)i(there)e(w)n(as)g(only)g (one)722 1021 y(truc)n(k)28 b(\(namely)-7 b(,)29 b FB(tr)p FD(\))f(in)g(the)h(mo)r(del,)g(ev)n(erything)e(w)n(ork)n(ed)f(w)n(ell,) j(but)g(when)f(there)722 1121 y(w)n(ere)e(more)f(truc)n(ks)h(a)g(plan)g (couldn't)h(b)r(e)f(found)h(b)r(ecause)f(only)g(one)g(of)g(the)h(truc)n (ks)722 1220 y(could)h(mo)n(v)n(e.)639 1372 y Fz(\017)41 b FD(Commen)n(t)29 b(rules)g(out)g(one)f(at)h(a)g(time)g(to)g(see)g (whic)n(h)g(rule)f(causes)g(the)i(con)n(tradic-)722 1472 y(tion.)37 b(Of)26 b(course,)f(if)h(the)g(problem)g(is)f(that)h(some)g (necessary)e(rule)h(is)h(missing,)g(y)n(ou)722 1571 y(cannot)33 b(\014nd)g(it)g(this)g(w)n(a)n(y)-7 b(.)52 b(It)33 b(is)f(also)g(p)r (ossible)h(that)g(the)g(rule)f(commen)n(ted)h(out)722 1671 y(w)n(orks)26 b(correctly)-7 b(,)26 b(but)j(some)e(other)g (incorrect)f(rule)h(con\015icts)h(with)g(it.)639 1823 y Fz(\017)41 b FD(Mak)n(e)27 b(the)h(domains)e(as)h(small)g(as)g(p)r (ossible.)37 b(If)27 b(y)n(our)g(program)e(w)n(orks)h(w)n(ell)h(when) 722 1923 y(there)34 b(is)f(only)g(one)g(item)h(of)f(some)g(t)n(yp)r(e)h (and)f(it)h(fails)f(when)h(there)f(are)f(more)h(of)722 2022 y(them,)24 b(it)d(is)h(quite)f(lik)n(ely)g(that)h(some)e(rule)i (demands)f(that)g(if)h(something)f(is)g(true)h(for)722 2122 y(one)29 b(item,)h(it)f(is)g(true)g(for)f(all)h(of)g(them.)41 b(F)-7 b(or)28 b(example,)h(I)g(once)g(tried)g(to)f(split)i(the)722 2221 y(predicate)e FB(drive)p 1308 2221 27 4 v 30 w(truck\(Tr,)40 b(From,)h(To,)h(I\))28 b FD(in)n(to)h(three)f(smaller)g(predicates:)722 2321 y FB(drives\(Tr,)40 b(I\))p FD(,)26 b FB(moves)p 1564 2321 V 29 w(from\(Tr,)41 b(From,)g(I\))p FD(,)26 b(and)h FB(moves)p 2765 2321 V 29 w(to\(Tr,)41 b(To,)i(I\))p FD(.)722 2421 y(The)28 b(rule)f(that)h(I)g(wrote)f(for)g FB(moves)p 1880 2421 V 29 w(to)g FD(w)n(as)f(of)i(the)g(form:)905 2549 y FB(moves)p 1130 2549 V 29 w(to\(Tr,)41 b(To,)i(I\))f(:-)1036 2648 y(truck\(Tr\),)1036 2748 y(location\(To\),)1036 2848 y(time\(I\),)1036 2947 y(drives\(Tr,)d(I\).)722 3073 y FD(Grounding)27 b(transformed)g(this)h(rule)f(in)n(to)g(form:) 905 3201 y FB(moves)p 1130 3201 V 29 w(to\(tr,)41 b(a,)i(1\))g(:-)g (drives\(tr,)c(1\).)905 3301 y(moves)p 1130 3301 V 29 w(to\(tr,)i(b,)i(1\))g(:-)g(drives\(tr,)c(1\).)722 3426 y FD(That)23 b(is,)g(the)h(rule)e(demanded)h(that)f(if)i(a)e(truc)n(k)g (driv)n(es)f(somewhere)h(at)g(all,)i(it)f(m)n(ust)722 3526 y(at)28 b(the)g(same)f(time)h(driv)n(e)f(to)g(eac)n(h)g(p)r (ossible)g(lo)r(cation.)639 3678 y Fz(\017)41 b FD(Use)26 b FB(compute)e FD(statemen)n(ts)h(to)h(test)h(what)f(com)n(bination)f (of)h(atoms)f(cause)h(con)n(tra-)722 3778 y(dictions.)39 b(Start)28 b(with)h(an)e(empt)n(y)j FB(compute)25 b FD(statemen)n(t)k (and)f(if)35 b FB(smodels)25 b FD(\014nds)j(a)722 3877 y(mo)r(del,)e(con)n(tin)n(ue)e(b)n(y)h(adding)f(some)g(atoms)g(that)h (should)g(b)r(e)g(in)g(the)g(mo)r(del)g(to)f(see)722 3977 y(where)j(the)h(things)g(go)f(wrong.)722 4102 y(F)-7 b(or)18 b(example,)i(when)f(debugging)e(m)n(y)h(planning)g(enco)r (ding,)i(I)f(used)f FB(compute)e FD(state-)722 4202 y(men)n(ts)28 b(of)f(the)h(form)905 4330 y FB(compute)41 b(1)i Fz(f)g FB(load)p 1607 4330 V 30 w(truck\(pct,tr,1\))o(,)38 b(drive)p 2598 4330 V 29 w(truck\(tr,a,b,2\),)1428 4430 y(unload)p 1697 4430 V 29 w(truck\(pct,tr,3\),)f(at\(pct,b,4\))i Fz(g)p FB(.)722 4556 y FD(after)30 b(adding)g(eac)n(h)f(op)r(erator)g (to)h(c)n(hec)n(k)f(that)h(the)h(program)d(could)i(\014nd)g(at)g(least) 722 4655 y(some)d(legal)g(plan.)639 4807 y Fz(\017)41 b FD(Use)g(the)g FB(-t)f FD(option)g(to)g(see)g(what)h(exactly)g FB(lparse)d FD(do)r(es)i(to)h(y)n(our)e(program.)722 4907 y(Because)23 b(the)h(ground)e(programs)f(are)i(often)h(quite)f (big)h(y)n(ou)e(should)i(commen)n(t)f(out)722 5006 y(ev)n(erything)k (that)h(in)f(y)n(our)g(opinion)g(is)g(not)h(related)f(to)h(the)f(bug.) 1905 5255 y(64)p eop %%Page: 65 69 65 68 bop 639 523 a Fz(\017)41 b FD(Use)28 b(the)g(parser)e(w)n (arnings.)35 b(The)28 b(w)n(arnings)e(are)g(detailed)i(in)g(the)g(next) g(section.)639 684 y Fz(\017)41 b FD(Y)-7 b(ou)28 b(can)f(also)g(try)g (to)g(compute)h(the)g(partial)f(mo)r(dels)g(of)h(the)g(program)d(using) j(the)722 784 y(opition)36 b FB(--partial)p FD(.)57 b(This)36 b(ma)n(y)f(sometimes)g(giv)n(e)f(some)h(hin)n(ts)h(on)g(where)f(the)722 883 y(problem)27 b(is)h(lo)r(cated.)722 1014 y(F)-7 b(or)27 b(example,)h(a)f(program)905 1156 y FB(a)43 b(:-)g(b.)905 1256 y(b)g(:-)g(not)f(a.)722 1386 y FD(do)r(esn't)29 b(ha)n(v)n(e)f(an)n(y)h(mo)r(dels)g(since)f(not)h Fx(a)g FD(implies)h Fx(a)p FD(,)f(whic)n(h)g(causes)f(a)h(con)n(tradic-)722 1486 y(tion.)57 b(The)34 b(problem)g(here)g(is)g(that)g(a)g FB(not)f FD(w)n(as)h(forgotten)f(from)h(the)g(\014rst)g(rule.)722 1585 y(Using)28 b(the)g(option)f FB(--partial)d FD(w)n(e)j(get)g(the)h (follo)n(wing)f(result:)905 1727 y FB(\045)43 b(lparse)e(--partial)f (foo)i(|)i(smodels)905 1827 y(smodels)d(version)f(2.25.)85 b(Reading...done)905 1927 y(Answer:)f(1)905 2026 y(Stable)41 b(Model:)85 b(a')42 b(b')905 2126 y(True)722 2256 y FD(The)34 b(atoms)f Fx(a)1194 2226 y Fg(0)1251 2256 y FD(and)h Fx(b)1455 2226 y Fg(0)1512 2256 y FD(are)f(true)g(in)i(the)f(partial)f (mo)r(del)h(but)g Fx(a)g FD(and)g Fx(b)f FD(are)g(not,)722 2356 y(suggesting)e(that)h(the)g(problem)g(is)g(someho)n(w)e(related)i (to)f Fx(a)h FD(and)g Fx(b)g FD(atoms,)g(since)722 2456 y(they)c(are)f(only)g(p)r(ossibly)g(true.)515 2728 y FA(7.3)135 b(P)l(arser)46 b(W)-11 b(arnings)515 2910 y FB(Lparse)28 b FD(can)i(detect)h(some)g(p)r(ossible)f(errors)e(from)j (its)g(input.)46 b(The)31 b(c)n(hec)n(ks)f(are)f(mostly)515 3009 y(aimed)g(to)g(detect)g(constructs)g(that)g(ha)n(v)n(e)f(caused)h (trouble)g(earlier)2674 2979 y Ft(1)2709 3009 y FD(.)42 b(Most)29 b(of)g(the)h(con-)515 3109 y(structs)38 b(are)f(sometimes)g (useful,)k(but)e(in)g(wrong)d(places)i(they)g(ha)n(v)n(e)f(caused)g(a)h (lot)g(of)515 3209 y(debugging.)43 b(If)31 b(y)n(ou)e(w)n(an)n(t)g(to)h (use)g(the)h(w)n(arnings)d(e\013ectiv)n(ely)-7 b(,)31 b(y)n(ou)e(should)h(kno)n(w)f(what)515 3308 y(causes)d(w)n(arnings)g (and)i(wh)n(y)-7 b(.)515 3479 y FB(-W)42 b(arity)722 3578 y(Arity)29 b FD(detects)j(cases)e(when)h(a)g(predicate)g(sym)n(b)r (ol)f(has)h(t)n(w)n(o)f(di\013eren)n(t)h(arities)g(in)722 3678 y(same)e(program.)39 b(This)29 b(w)n(arning)f(is)h(mainly)g(in)n (tended)g(for)g(catc)n(hing)f(bugs)h(where)722 3778 y(y)n(ou)e(forgot)f (an)i(argumen)n(t)e(from)i(a)f(predicate.)36 b(F)-7 b(or)27 b(example)905 3920 y FB(p\(a\).)905 4019 y(p\(a,a\).)722 4150 y FD(causes)g(the)h(w)n(arning)722 4337 y FB(2:)43 b(Warning:)d(predicate)g('p')j(is)f(used)g(with)g(2)h(arguments)d(at)j (line)f(2,)853 4436 y(while)g(it)g(is)h(also)f(used)g(with)g(1)h (argument)d(at)j(line)f(1.)722 4623 y FD(There)30 b(are)f(cases)h(when) g(when)h(it)g(is)f(useful)g(to)h(ha)n(v)n(e)e(man)n(y)h(di\013eren)n(t) g(arities)g(for)722 4723 y(same)d(predicate.)37 b(F)-7 b(or)27 b(example,)g(y)n(ou)g(could)g(w)n(an)n(t)g(to)g(sa)n(y)g (something)g(lik)n(e)p 515 4771 1146 4 v 607 4825 a Fs(1)642 4848 y Fr(If)20 b(y)n(ou)i(are)f(sometimes)e(bitten)j(badly)f(b)n(y)h (something)e(y)n(ou)i(think)f Fq(lparse)i Fr(should)e(detect)i (automat-)515 4927 y(ically)-6 b(,)29 b(please)g(send)g(me)f(an)h (email)e(ab)r(out)j(it)f(and)g(I'll)f(try)g(to)i(incorp)r(orate)f(a)g (new)g(w)n(arning)g(for)f(it)g(in)515 5006 y(later)23 b(releases.)1905 5255 y FD(65)p eop %%Page: 66 70 66 69 bop 905 523 a FB(goal)42 b(:-)h(goal\(I\),)d(time\(I\).)722 656 y FD(to)29 b(sa)n(y)e(that)i(it)g(do)r(esn't)f(matter)g(when)h(the) g(goal)e(is)h(found.)40 b(Of)28 b(course,)g(in)h(man)n(y)722 756 y(of)f(these)f(cases)g(it)h(w)n(ould)f(b)r(e)h(b)r(etter)g(to)g (use)f(di\013eren)n(t)h(predicate)f(sym)n(b)r(ols.)515 922 y FB(-W)42 b(extended)722 1021 y(Extended)28 b FD(detects)i (general)g(problems)f(with)i(extended)g(rules.)45 b(This)31 b(is)f(a)h(w)n(arn-)722 1121 y(ing)i(that)h(should)f(b)r(e)h(enabled)f (nearly)g(alw)n(a)n(ys.)52 b(A)n(t)34 b(least)f(I)g(ha)n(v)n(en't)g (found)h(an)n(y)722 1220 y(legitimate)28 b(use)f(for)g(the)h (constructs)f(that)h(trigger)e(this)i(w)n(arning.)722 1353 y(Curren)n(tly)-7 b(,)27 b FB(extended)c FD(w)n(arns)j(ab)r(out)h (cases)f(where)g(y)n(ou)h(ha)n(v)n(e)f(explicitly)h(de\014ned)722 1453 y(w)n(eigh)n(ts)18 b(in)g(places)g(where)g(they)h(don't)f(ha)n(v)n (e)g(an)n(y)f(e\013ect.)34 b(Most)19 b(often)f(this)h(happ)r(ens)722 1553 y(b)r(ecause)27 b(y)n(ou)g(ha)n(v)n(e)g(used)g(curly)g(braces)g (instead)g(of)h(brac)n(k)n(ets.)722 1685 y(F)-7 b(or)27 b(example,)905 1835 y FB(a)43 b(:-)g(2)g Fz(f)g FB(b)g(=)g(3,)g(not)g (c)g(=)g(2)g Fz(g)p FB(.)722 1968 y FD(giv)n(es)27 b(the)h(w)n(arning) 722 2167 y FB(1:)43 b(Warning:)d(weight)h(defined)g(for)h(literal)f ('b')h(in)h(a)g(constraint)1245 2267 y(rule.)722 2366 y(1:)g(Warning:)d(weight)h(defined)g(for)h(literal)f('not)h(c')h(in)g (a)g(constraint)1245 2466 y(rule.)722 2665 y FD(Here)28 b(the)g(\014x)f(is)h(to)f(replace)g(`)p Fz(f)p FD(')g(and)g(`)p Fz(g)p FD(')h(with)g(`)p FB([)p FD(')f(and)h(`)p FB(])f FD('.)515 2831 y FB(-W)42 b(library)722 2931 y(Library)27 b FD(causes)i(a)h(w)n(arning)f(in)h(t)n(w)n(o)f(cases:)41 b(if)30 b(y)n(ou)f(ha)n(v)n(e)g(de\014ned)i(a)e(library)g(\014le)722 3030 y(that)f(do)r(esn't)g(exist)f(in)h FB(.lparserc)c FD(or)j(if)h(y)n(ou)f(declare)f(a)i(function)g(t)n(w)n(o)f(times.)515 3196 y FB(-W)42 b(similar)722 3296 y(Similar)28 b FD(detects)j(cases)f (where)g(y)n(ou)g(migh)n(t)g(ha)n(v)n(e)g(missp)r(elled)h(the)g (initial)g(letter)722 3396 y(of)d(a)f(constan)n(t)g(or)g(v)-5 b(ariable.)35 b(F)-7 b(or)27 b(example,)h(in)g(the)f(program)905 3545 y FB(a\(1..5\).)905 3645 y(b\(3..7\).)905 3744 y(c\(I\))42 b(:-)h(a\(I\),)e(b\(i\).)722 3877 y FD(the)e(v)-5 b(ariable)37 b FB(I)h FD(w)n(as)g(missp)r(elled)g(in)h(the)g(literal)e FB(b\(i\))g FD(so)h(the)g(domain)g(of)h(the)722 3977 y(predicate)31 b FB(c\(X\))f FD(is)h(empt)n(y)h(instead)f(of)38 b FB(c\(3..5\))28 b FD(as)j(in)n(tended.)49 b(If)32 b(the)f(w)n(arning) 722 4076 y FB(similar)25 b FD(is)j(enabled,)f FB(lparse)e FD(prin)n(ts:)722 4276 y FB(3:)43 b(Warning:)d(constant)h('i')h(is)h (similar)d(to)j(variable)d('I')853 4375 y(\(other)h(occurrences)e(of)k ('i')f(are)h(not)f(checked\))722 4575 y(Lparse)25 b FD(w)n(arns)i(only) g(the)h(\014rst)f(p)r(ossible)g(t)n(yp)r(o)h(that)g(it)g(sees.)722 4707 y(This)35 b(w)n(arning)e(is)i(quite)g(often)g(a)g(false)f(alarm,)i (since)e(there)h(are)f(man)n(y)g(reasons)722 4807 y(wh)n(y)40 b(a)f(program)f(w)n(ould)i(ha)n(v)n(e)f(similar)g(names)g(for)h (constan)n(ts)f(and)g(v)-5 b(ariables.)722 4907 y(Ho)n(w)n(ev)n(er,)29 b(enabling)h(this)h(w)n(arning)d(cathces)i(some)g(of)g(the)h(most)f (anno)n(ying)e(bugs)722 5006 y(in)g(logic)f(programs.)1905 5255 y(66)p eop %%Page: 67 71 67 70 bop 515 523 a FB(-W)42 b(unsat)722 623 y(Unsat)36 b FD(is)i(another)e(option)i(that)g(can)f(catc)n(h)g(hard-to-\014nd)g (t)n(yp)r(os.)66 b(Giv)n(en)38 b(this)722 722 y(option)20 b(lparse)e(w)n(arns)g(if)i(there)g(is)f(some)g(predicate)g(sym)n(b)r (ol)g(that)h(can't)g(b)r(e)f(satis\014ed)722 822 y(b)r(ecause)38 b(it)h(do)r(esn't)g(o)r(ccur)e(in)i(a)f(head)g(of)g(an)n(y)g(rule.)69 b(This)38 b(option)g(is)g(mainly)722 922 y(in)n(tended)g(to)f(\014nd)g (out)g(cases)f(where)h(y)n(ou)f(ha)n(v)n(e)g(missp)r(elled)h(a)g (predicate.)65 b(F)-7 b(or)722 1021 y(example,)28 b(in)f(the)h(program) 905 1158 y FB(const)41 b(max)p 1303 1158 27 4 v 31 w(time)h(=)h(10.)905 1257 y(time\(1)e(..)86 b(max)p 1521 1257 V 31 w(time\).)905 1357 y Fz(f)43 b FB(action\(I\))d Fz(g)j FB(:-)g(preconition\(I\),)37 b(time\(I\).)905 1457 y(precondition\(I\))g(:-)43 b(time\(I\).)722 1585 y FD(the)30 b(\014rst)g(non-trivial)e(rule)h(is)h(probably)e (trying)h(to)g(sa)n(y)g(that)h(an)f FB(action)e FD(is)j(p)r(os-)722 1685 y(sible)i(only)g(if)h(its)f FB(precondition)27 b FD(is)32 b(true,)h(but)g(the)f(predicate)g(w)n(as)f(missp)r(elled.)722 1784 y(Sometimes)39 b(these)f(errors)e(are)h(a)h(pain)h(to)f(\014nd)h (and)f(correct.)67 b(Using)38 b(w)n(arning)722 1884 y FB(unsat)26 b(lparse)f FD(prin)n(ts:)722 2062 y FB(3:)43 b(Warning:)d(predicate)g('preconition/1')e(doesn't)i(occur)i(in)h(any)f (rule)1245 2162 y(head.)722 2340 y FD(This)24 b(option)f(is)h(similar)f (to)h(the)g(one)f(ab)r(o)n(v)n(e)g(in)h(that)g(there)f(are)g(man)n(y)g (cases)g(where)722 2439 y(it)i(is)f(not)h(an)f(error)e(to)j(ha)n(v)n(e) e(some)h(unsatis\014able)g(predicate)f(in)i(the)g(program.)34 b(F)-7 b(or)722 2539 y(example,)28 b(in)f(the)h(program,)905 2675 y FB(a)43 b(:-)g(not)f(b,)h(enable)p 1697 2675 V 29 w(a.)905 2775 y(b)g(:-)g(not)f(a.)722 2904 y FD(w)n(e)21 b(w)n(an)n(t)g(that)g FB(a)g FD(is)g(not)g(in)h(an)n(y)e(mo)r(del)h (unless)g(w)n(e)g(sp)r(eci\014cally)g(allo)n(w)f(it)i(b)n(y)f(adding) 722 3003 y FB(enable)p 991 3003 V 29 w(a)27 b FD(as)g(a)h(fact)f(in)n (to)h(the)g(program.)515 3161 y FB(-W)42 b(weight)722 3260 y(Weight)26 b FD(prin)n(ts)h(a)g(w)n(arning)g(if)h(y)n(ou)f(use)g (the)h(default)h(w)n(eigh)n(t)e(of)g(a)g(literal)h(in)g(some)722 3360 y(w)n(eigh)n(t)22 b(rule.)34 b(Default)23 b(w)n(eigh)n(ts)f(are)f (v)n(ery)g(often)h(useful)h(but)f(if)h(y)n(ou)e(w)n(an)n(t)h(to)g (de\014ne)722 3460 y(w)n(eigh)n(t)k(explicitly)h(for)e(eac)n(h)h (literal,)g(y)n(ou)g(can)g(set)g(this)h(option)f(to)g(catc)n(h)g(t)n (yp)r(os)g(in)722 3559 y(global)h(w)n(eigh)n(t)g(de\014nitions.)37 b(F)-7 b(or)27 b(example,)g(y)n(ou)g(migh)n(t)g(ha)n(v)n(e)g(program) 905 3696 y FB(e\(1..3\).)905 3796 y(weight)41 b(c\(1\))h(=)h(10.)905 3895 y(weight)e(c\(2\))h(=)h(15.)905 3995 y(weight)e(d\(3\))h(=)h(20.) 905 4094 y(a)g(:-)g(30)g([)g(c\(X\))f(:)h(e\(X\))f(].)722 4223 y FD(Here)35 b(the)g(idea)f(is,)i(that)f FB(a)g FD(should)f(b)r(e)h(true)g(if)g(the)g(total)f(w)n(eigh)n(t)g(of)h(true) g FB(c\(X\))722 4323 y FD(atoms)23 b(is)h(more)f(than)h(30.)35 b(Ho)n(w)n(ev)n(er,)23 b(the)h(last)g(w)n(eigh)n(t)f(de\014nition)h(w)n (as)f(missp)r(elled)722 4422 y(so)k(that)h(the)g(w)n(eigh)n(t)f(of)34 b FB(c\(3\))26 b FD(is)i(the)f(default)i(1)e(instead)g(of)h(20.)722 4551 y(Giv)n(en)g(the)g(option)f FB(-W)43 b(weight)25 b(lparse)g FD(w)n(arns:)722 4729 y FB(5:)43 b(Warning:)d(default)h (weight)g(used)h(for)g(literal)f('c\(3\)')515 4907 y(-W)h(error)722 5006 y(Error)26 b FD(causes)g FB(lparse)g FD(to)h(treat)g(all)h(w)n (arnings)e(as)g(errors.)1905 5255 y(67)p eop %%Page: 68 72 68 71 bop 639 523 a FD(There)27 b(are)f(three)h(options)f(that)i(can)e (b)r(e)i(used)f(to)g(set)g(more)f(than)h(one)g(w)n(arning)f(\015ag)515 623 y(at)h(a)g(time:)639 789 y Fz(\017)41 b FB(-W)i(all)26 b FD(enables)i(all)f(w)n(arnings.)639 955 y Fz(\017)41 b FB(-W)i(syntax)25 b FD(sets)j FB(arity)p FD(,)d FB(extended)p FD(,)g(and)i FB(weight)p FD(.)639 1121 y Fz(\017)41 b FB(-W)i(typo)26 b FD(sets)h FB(similar)e FD(and)j FB(unsat)p FD(.)515 1395 y FA(7.4)135 b(Handling)46 b(BIG)e(programs)515 1577 y FD(Y)-7 b(ou)22 b(sometimes)g(meet)h(problems)e(where)h(the)g FB(smodels)e FD(\014nds)i(the)h(stable)f(mo)r(dels)g(in)h(few)515 1677 y(seconds)h(but)h FB(lparse)d FD(tak)n(es)i(20{30)e(seconds)i (\(or)h(ev)n(en)f(more\))g(to)h(ground)e(the)j(problem.)515 1776 y(If)h(these)f(are)g(isolated)f(cases,)h(the)h(problem)f(is)g(not) h(sev)n(ere.)35 b(On)26 b(the)h(other)f(hand,)h(if)g(y)n(ou)515 1876 y(w)n(an)n(t)22 b(to)h(alter)g(the)h FB(compute)c FD(statemen)n(ts)j(just)h(a)f(bit)h(or)e(t)n(w)n(eak)g(the)i(domain)f (predicates,)515 1976 y(ha)n(ving)j(to)i(ground)e(the)i(whole)g (program)d(ev)n(ery)h(time)i(can)g(b)r(e)g(quite)g(a)f(n)n(uisance.)639 2075 y(This)32 b(problem)g(can)f(b)r(e)i(partially)e(solv)n(ed)g(using) i FB(external)28 b FD(declarations)j(and)h(the)515 2175 y(command)19 b(line)h(option)g FB(-g)p FD(.)33 b(The)20 b(option)g(allo)n(ws)e(y)n(ou)h(to)h(read)f(in)h(a)f(previously)g (grounded)515 2275 y(progam)26 b(and)h(add)h(new)f(rules)g(to)h(it.)639 2374 y(In)g(this)g(section)f(w)n(e)g(consider)g(three)g(cases)g(that)h (o)r(ccur)f(in)g(practice:)616 2540 y(1.)41 b(w)n(e)c(don't)g(ha)n(v)n (e)e(to)i(c)n(hange)e(the)j(actual)e(grounded)g(program)e(but)k(w)n(e)e (w)n(an)n(t)g(to)722 2640 y(c)n(hange)27 b(the)h FB(compute)c FD(statemen)n(t;)616 2806 y(2.)41 b(there's)21 b(a)g(domain)f (predicate)h(whose)f(extension)h(is)g(not)g(a)n(v)-5 b(ailable)20 b(during)g(ground-)722 2906 y(ing)28 b(but)g(w)n(e)f(kno)n (w)g(what)g(is)h(the)g(largest)e(p)r(ossible)h(extension;)h(and)616 3072 y(3.)41 b(w)n(e)36 b(ha)n(v)n(e)f(an)h(existing)g(program)e(and)i (w)n(e)g(w)n(an)n(t)g(to)g(enlarge)f(the)i(extensions)e(of)722 3171 y(domain)27 b(predicates)g(to)h(get)f(more)g(rules.)515 3337 y(The)g(second)f(case)g(o)r(ccurs)g(for)g(example)h(in)g(the)g (con\014guration)f(managemen)n(t)g(problem;)515 3437 y(w)n(e)e(kno)n(w)f(that)h(there's)g(a)g(set)g(of)g(comp)r(onen)n(ts)g (that)g(the)h(user)f(can)f(c)n(ho)r(ose)g(but)i(w)n(e)f(don't)515 3537 y(kno)n(w)34 b(what)g(the)i(actual)e(c)n(hoices)g(will)h(b)r(e)g (for)f(eac)n(h)g(con\014guration)f(task)h(b)r(eforehand.)515 3636 y(An)29 b(example)f(of)h(the)g(third)g(case)e(o)r(ccurs)h(in)h (planning)f(problems)g(where)g(w)n(e)h(ma)n(y)f(w)n(an)n(t)515 3736 y(to)f(increase)g(the)h(n)n(um)n(b)r(er)f(of)g(time)i(steps)e(if)h (a)f(plan)h(can't)f(b)r(e)h(found.)639 3835 y(F)-7 b(or)27 b(the)h(rest)f(of)h(this)g(section)f(w)n(e)g(will)h(examine)f(the)h (program)e FB(test.lp)p FD(:)515 4001 y FC(Program)31 b(7.1)722 4118 y FB(a\(1)43 b(..)86 b(max)p 1208 4118 27 4 v 30 w(a\).)722 4217 y(b\(X\))42 b(:-)h(a\(X\),)e(not)i(c\(X\).) 722 4317 y(c\(X\))f(:-)h(a\(X\),)e(not)i(b\(X\).)515 4549 y Fh(7.4.1)112 b(Altering)35 b(the)j Fa(Compute)h Fh(Statemen)m(t)515 4703 y FD(So,)g(y)n(ou)d(ha)n(v)n(e)f(no)n(w)i (written)g FB(test.lp)d FD(and)i(y)n(ou)g(w)n(an)n(t)h(to)f(test)h(it)h (out)f(with)g(sev)n(eral)515 4802 y(di\013eren)n(t)24 b FB(compute)e FD(statemen)n(ts)i(without)i(ha)n(ving)d(to)h(ground)g (the)h(program)d(again)i(eac)n(h)515 4902 y(time.)639 5001 y(First)k(step)f(is)h(to)f(ground)g(the)h(program)e(the)i(\014rst) f(time:)1905 5255 y(68)p eop %%Page: 69 73 69 72 bop 515 523 a FB(\045)43 b(lparse)e(-c)i(max_a=2)d(test.lp)h(>)i (test\\_output)515 689 y FD(This)25 b(command)g(grounds)e FB(test.lp)g FD(and)i(stores)e(the)j(output)g(in)f(the)g(\014le)h FB(test)p 3070 689 27 4 v 29 w(output)p FD(.)515 789 y(The)h(argumen)n(t)g FB(-c)43 b(max)p 1325 789 V 30 w(a=2)26 b FD(sets)i(the)g(extension)f(of)g Fx(a)h FD(to)f Fz(f)p Fx(a)p FD(\(1\))p Fx(;)14 b(a)p FD(\(2\))p Fz(g)p FD(.)639 888 y(Next)36 b(step)f(is)g(to)g(write)f(a)h(source)f(\014le)h FB(compute.lp)c FD(that)k(con)n(tains)f(the)i FB(compute)515 988 y FD(statemen)n(t:)722 1104 y FB(compute)41 b Fz(f)i FB(b\(1\))f Fz(g)p FB(.)639 1204 y FD(No)n(w)27 b(y)n(ou)g(can)g (\014nd)h(all)g(mo)r(dels)f(of)h(Program)d(7.1)i(with)h(the)g(command)f (line:)722 1320 y FB($)43 b(lparse)f(-g)g(test)p 1426 1320 V 30 w(output)f(compute.lp)f(|)j(smodels)d(0)639 1420 y FD(The)28 b(output)g(of)g(the)g(command)f(is:)515 1586 y FB(smodels)40 b(version)h(2.25.)h(Reading...done)515 1685 y(Answer:)e(1)515 1785 y(Stable)h(Model:)g(b\(1\))h(c\(2\))g (a\(1\))g(a\(2\))515 1885 y(Answer:)e(2)515 1984 y(Stable)h(Model:)g (b\(1\))h(b\(2\))g(a\(1\))g(a\(2\))515 2084 y(False)515 2250 y FD(Changing)26 b(the)i FB(compute.lp)c FD(to)722 2366 y FB(compute)41 b Fz(f)i FB(b\(1\),)f(b\(2\))g Fz(g)p FB(.)639 2466 y FD(y)n(ou)27 b(will)h(get)f(only)g(one)h(mo)r(del,)f (as)g(exp)r(ected:)515 2632 y FB(smodels)40 b(version)h(2.25.)h (Reading...done)515 2731 y(Answer:)e(1)515 2831 y(Stable)h(Model:)g (b\(1\))h(b\(2\))g(a\(1\))g(a\(2\))515 2931 y(False)515 3097 y FD(No)n(w,)26 b(with)h(all)g(this)f(success)g(y)n(ou)g(migh)n(t) h(w)n(an)n(t)f(to)g(simplify)h(the)g FB(compute)d FD(statemen)n(t)i(a) 515 3196 y(bit)i(and)f(c)n(hange)g(it)h(to)f(the)h(form:)722 3313 y FB(compute)41 b Fz(f)i FB(b\(X\))f(:)h(a\(X\))f Fz(g)p FB(.)639 3412 y FD(Ho)n(w)n(ev)n(er,)20 b(quite)h(surprisingly)f (the)h(answ)n(er)e(is)i(not)f(the)i(same)e(as)g(it)h(w)n(as)f(to)g(the) i(earlier)515 3512 y(query!)39 b(Instead)28 b(of)g(ha)n(ving)g(only)g (one)g(mo)r(del)g(con)n(taining)g Fx(b)p FD(\(1\))g(and)g Fx(b)p FD(\(2\),)h(y)n(ou)f(will)g(get)515 3611 y(all)f(four)g(mo)r (dels)h(of)f(Program)e(7.1:)515 3778 y FB(smodels)40 b(version)h(2.25.)h(Reading...done)515 3877 y(Answer:)e(1)515 3977 y(Stable)h(Model:)g(b\(1\))h(c\(2\))g(a\(1\))g(a\(2\))515 4076 y(Answer:)e(2)515 4176 y(Stable)h(Model:)g(b\(1\))h(b\(2\))g (a\(1\))g(a\(2\))515 4276 y(Answer:)e(3)515 4375 y(Stable)h(Model:)g (c\(1\))h(b\(2\))g(a\(1\))g(a\(2\))515 4475 y(Answer:)e(4)515 4575 y(Stable)h(Model:)g(c\(1\))h(c\(2\))g(a\(1\))g(a\(2\))515 4674 y(False)515 4840 y FD(What)f(happ)r(ened)g(here?)77 b(The)40 b(explanation)g(lies)h(in)g(the)h(fact)f(that)g(once)f(a)h (rule)f(is)515 4940 y(grounded)31 b(its)g(structure)h(is)f(lost.)49 b(There)32 b(is)f(no)h(connection)f(from)g(the)i(grounded)d(rule)1905 5255 y(69)p eop %%Page: 70 74 70 73 bop 515 523 a FD(to)30 b(the)g(original)f(non-ground)f(rule)i (that)h(generated)e(it.)44 b(Similarily)-7 b(,)31 b(the)f(kno)n(wledge) f(of)515 623 y(domain)e(predicates)g(and)g(their)h(extensions)f(is)g (lost.)639 722 y FB(Lparse)g FD(\014rst)i(read)f(the)i(ground)e (program)f(in,)j(recognizing)d(and)i(storing)f(the)i(atom)515 822 y(names)c(in)i(the)f(pro)r(cess.)35 b(Then)28 b(it)f(simply)g (passed)f(the)i(rules,)e(unmo)r(di\014ed,)i(to)f FB(smodels)515 922 y FD(and)22 b(started)g(to)h(read)f(in)h FB(compute.lp)18 b FD(and)23 b(pro)r(cess.)34 b(As)23 b(it)g(didn't)g(giv)n(e)f(an)n(y)g (de\014nitions)515 1021 y(to)28 b(the)h(predicate)f Fx(a=)p FD(1,)g(the)h(condition)f(in)h(the)g FB(compute)d FD(statemen)n(t)i(w)n (as)g(expanded)g(to)515 1121 y(the)g(empt)n(y)f(set)h(of)g(literals)e (that)i(didn't)h(constrain)n(t)d(the)i(mo)r(dels)g(in)f(an)n(y)g(w)n(a) n(y)-7 b(.)639 1220 y(In)29 b(theory)f(it)h(w)n(ould)f(b)r(e)h(p)r (ossible)f(to)g(construct)g(the)h(domains)f(from)g(the)h(grounded)515 1320 y(program)c(but)j(this)g(w)n(ould)g(cause)e(other)h(problems:)616 1486 y(1.)41 b(it)26 b(is)f(p)r(ossible)g(that)h(the)g(program)d(w)n (as)i(originally)e(grounded)i(with)h FB(-d)42 b(none)24 b FD(and)722 1586 y(there)k(are)e(actually)h(no)h(domain)f(predicates)f (left)j(at)e(all;)h(and)616 1752 y(2.)41 b(computing)31 b(domains)f(w)n(ould)h(mak)n(e)f(it)i(imp)r(ossible)e(to)h(incremen)n (tally)g(ground)e(a)722 1851 y(program)j(as)h(all)h(rules)f(w)n(ould)h (need)g(to)g(b)r(e)g(grounded)f(for)g(the)i(old)e(domains)h(as)722 1951 y(w)n(ell)28 b(as)f(the)h(new)f(ones.)515 2183 y Fh(7.4.2)112 b(Restricting)35 b(the)i(Extensions)g(of)h(Domain)e (Predicates)515 2337 y FD(In)27 b(the)g(second)f(scenario)f(y)n(ou)h(w) n(an)n(t)g(to)g(alter)g(the)h(domains)f(of)h(domain)f(predicates)g(and) 515 2436 y(y)n(ou)h(ha)n(v)n(e)g(the)i(adv)-5 b(an)n(tage)27 b(of)h(kno)n(wing)f(the)i(maximal)f(extensions)f(for)h(eac)n(h)g (predicate.)515 2536 y(In)35 b(terms)f(of)g(Program)e(7.1,)k(y)n(ou)e (w)n(ould)g(kno)n(w)g(that)h(there)f(w)n(ere)g(at)g(most)h FB(max)p 3179 2536 27 4 v 30 w(a)f FD(in-)515 2636 y(stances)27 b(of)g Fx(a)p FD(\()p Fx(X)7 b FD(\))28 b(but)g(y)n(ou)f(didn't)h(kno)n (w)f(whic)n(h)g(ones)g(are)g(necessary)-7 b(.)639 2735 y(These)30 b(situations)f(can)g(b)r(e)h(handled)g(with)g(the)g FB(external)c FD(declarations.)42 b(W)-7 b(e)30 b(start)515 2835 y(b)n(y)d(mo)r(difying)i FB(test.lp)c FD(a)i(bit:)515 3001 y FC(Program)k(7.2)722 3117 y FB(external)41 b(a\(X\).)722 3217 y(a\(1)i(..)86 b(max)p 1208 3217 V 30 w(a\).)722 3316 y(b\(X\))42 b(:-)h(a\(X\),)e(not)i(c\(X\).)722 3416 y(c\(X\))f(:-)h(a\(X\),)e(not)i(b\(X\).)515 3582 y FD(W)-7 b(e)28 b(can)f(no)n(w)g(c)n(hec)n(k)g(with)h(the)g FB(-t)f FD(option)g(what)g(happ)r(ens)h(to)f(the)h(program:)515 3748 y FB(\045)43 b(lparse)e(-t)i(-c)g(max_a=2)d(test.lp)515 3848 y(c\(1\))i(:-)g(a\(1\),)g(not)g(b\(1\).)515 3947 y(c\(2\))g(:-)g(a\(2\),)g(not)g(b\(2\).)515 4047 y(b\(1\))g(:-)g (a\(1\),)g(not)g(c\(1\).)515 4147 y(b\(2\))g(:-)g(a\(2\),)g(not)g (c\(2\).)515 4313 y FD(As)21 b(w)n(e)g(see,)h FB(lparse)d FD(created)h(a)h(rule)g(for)g(eac)n(h)f(p)r(ossible)h(binding)g(of)h Fx(a)p FD(\()p Fx(X)7 b FD(\))21 b(didn't)h(include)515 4412 y(them)d(as)g(facts)f(in)i(the)f(program.)32 b(No)n(w)18 b(w)n(e)h(can)g(sp)r(ecify)g(the)g(extension)g(of)g Fx(a)g FD(in)g(a)g(separate)515 4512 y(program)25 b FB(a)p 896 4512 V 31 w(def.lp)p FD(:)722 4628 y FB(a\(1\).)639 4728 y FD(W)-7 b(e)34 b(can)f(no)n(w)g(com)n(bine)f FB(a)p 1504 4728 V 31 w(def.lp)f FD(with)j(the)g FB(test)p 2350 4728 V 29 w(output)d FD(generated)h(as)h(in)h(the)515 4827 y(previous)26 b(section)h(to)h(get:)1905 5255 y(70)p eop %%Page: 71 75 71 74 bop 515 523 a FB(\045)43 b(lparse)e(-g)i(test_output)c(a_def.lp)h (|)j(smodels)e(0)515 623 y(smodels)f(version)h(2.25.)h(Reading...done) 515 722 y(Answer:)e(1)515 822 y(Stable)h(Model:)g(b\(1\))h(a\(1\))515 922 y(Answer:)e(2)515 1021 y(Stable)h(Model:)g(c\(1\))h(a\(1\))515 1121 y(False)639 1287 y FD(Note)26 b(that)g(y)n(ou)g(cannot)f(use)h(a)f FB(hide)g FD(declaration)f(on)i(a)g(predicate)f(that)h(is)g(declared) 515 1386 y(to)34 b(b)r(e)g FB(external)p FD(.)52 b(The)34 b(reason)f(for)g(this)h(is)g(that)g(once)g(y)n(ou)f(ha)n(v)n(e)g(thro)n (wn)g(the)h(name)515 1486 y(a)n(w)n(a)n(y)-7 b(,)38 b(only)f(thing)g (that)h(is)g(left)g(is)f(the)h(n)n(umerical)f(index)g(of)h(the)f(atom)h (and)f(it)h(isn't)515 1586 y(p)r(ossible)27 b(to)g(asso)r(ciate)g(it)h (to)f(its)h(original)e(represen)n(tation.)639 1685 y(If)33 b(y)n(ou)e(really)f(wish,)j(y)n(ou)e(can)h(read)f(more)g(than)g(one)h (grounded)f(program)e(in)k(with)515 1785 y FB(-g)28 b FD(switc)n(hes.)42 b(Ho)n(w)n(ev)n(er,)28 b(this)h(will)h(probably)e (cause)h(problems)f(as)h(di\013eren)n(t)g(programs)515 1885 y(ma)n(y)k(ha)n(v)n(e)f(used)h(the)h(same)f(n)n(umerical)g(index)h (for)f(di\013eren)n(t)g(atoms.)54 b FB(Lparse)31 b FD(notices)515 1984 y(and)h(giv)n(es)f(an)g(error)f(message)h(for)h(man)n(y)f(of)h (these)g(cases)f(but)i(if)f(there)g(are)f(hidden)i(or)515 2084 y(in)n(ternal)25 b(atoms,)h(it)h(is)f(v)n(ery)f(lik)n(ely)g(that)i (the)f(programs)e(will)j(mix)f(together)f(incorrectly)-7 b(.)515 2183 y(So)32 b(use)h(m)n(ultiple)g FB(-g)f FD(options)g(only)g (if)h(y)n(ou)f(are)g(absolutely)g(sure)g(that)h(the)g(atom)f(lists)515 2283 y(are)26 b(iden)n(tical)i(for)f(b)r(oth)h(programs.)515 2516 y Fh(7.4.3)112 b(Enlarging)36 b(the)i(Extensions)e(of)i(the)f (Domain)g(Predicates)515 2669 y FD(In)29 b(the)g(third)g(scenario)e(w)n (e)h(ha)n(v)n(e)g(grounded)g(the)h(program)e(but)i(w)n(e)f(w)n(an)n(t)h (to)f(add)h(more)515 2768 y(instances)d(of)g(domain)g(predicates)f(to)i (it.)36 b(This)27 b(can)f(b)r(e)h(done)f(most)g(con)n(v)n(enien)n(tly)f (when)515 2868 y(using)g(n)n(umeric)h(domains)f(but)h(the)g(same)f (principles)h(hold)f(also)g(for)g(sym)n(b)r(olic)h(domains.)515 2968 y(Again,)h(w)n(e)g(start)g(b)n(y)h(mo)r(difying)g FB(test.lp)p FD(:)515 3134 y FC(Program)j(7.3)722 3250 y FB(a\(min)p 947 3250 27 4 v 30 w(a)43 b(..)86 b(max)p 1370 3250 V 30 w(a\).)722 3350 y(b\(X\))42 b(:-)h(a\(X\),)e(not)i (c\(X\).)722 3449 y(c\(X\))f(:-)h(a\(X\),)e(not)i(b\(X\).)515 3615 y FD(First)27 b(w)n(e)g(ground)g(the)h(program)e(with)i(the)g (initial)f(v)-5 b(alues)28 b(of)f(domain)g(predicates:)515 3781 y FB(\045)43 b(lparse)e(-c)i(min_a=1)d(-c)j(max_a=2)e(test.lp)g(>) i(test_output)515 3947 y FD(Supp)r(ose)22 b(that)g(w)n(e)g(no)n(w)f(w)n (an)n(t)h(to)g(increase)f(the)h(maxim)n(um)g(v)-5 b(alue)22 b(for)g Fx(a)g FD(to)g(3.)34 b(W)-7 b(e)23 b(can)e(do)515 4047 y(that)28 b(b)n(y)g(reading)f(in)h(the)h(grounded)e(program,)f (setting)i(the)h(minim)n(um)f(and)g(maxim)n(um)515 4147 y(v)-5 b(alues)27 b(to)g(3)h(and)f(grounding)f(the)i(original)e (program)g(again:)515 4313 y FB(\045)43 b(lparse)e(-g)i(test_output)c (-c)k(min_a=3)d(-c)j(max_a=3)e(test.lp)f(>)k(new_output)515 4412 y(\045)f(smodels)e(0)i(<)g(new_output)515 4645 y Fh(7.4.4)112 b(Hac)m(king)37 b(Bits)f(and)i(Pieces)f(T)-9 b(ogether)37 b(b)m(y)g(Hand)515 4798 y FD(If)27 b(the)h(grounded)e (program)g(is)h(su\016cien)n(tly)g(big,)g(just)h(running)f(it)h (through)f FB(lparse)d FD(can)515 4897 y(tak)n(e)34 b(to)r(o)h(m)n(uc)n (h)f(time)i(as)e(eac)n(h)g(atom)h(has)f(to)h(b)r(e)g(individually)g (pro)r(cessed.)58 b(In)35 b(those)515 4997 y(cases)29 b(y)n(ou)g(ma)n(y)h(ha)n(v)n(e)f(to)h(roll)f(up)i(y)n(our)e(sleev)n(es) g(and)h(do)g(some)f(manipulation)h(directly)1905 5255 y(71)p eop %%Page: 72 76 72 75 bop 515 523 a FD(to)35 b(the)h(grounded)e(program.)58 b(When)36 b(doing)f(this,)j(y)n(ou)c(ma)n(y)h(\014nd)h(it)f(helpful)i (to)e(read)515 623 y(Section)27 b(B)h(where)f(the)h(in)n(ternal)f FB(smodels)e FD(2.x)i(format)g(is)g(explained.)639 722 y(There)f(is)g(one)g(command)g(line)h(option,)f FB(--atom-file)c FD(that)27 b(can)f(b)r(e)g(used)h(to)f(divide)515 822 y(the)41 b FB(lparse)d FD(output)j(in)n(to)f(t)n(w)n(o)g(parts:)61 b(the)41 b(rules)f(and)g(the)h(rest)f(stu\013.)76 b(Giv)n(en)41 b(the)515 922 y(command)27 b(line)515 1085 y FB(\045)43 b(lparse)e(--atom-file)e(atoms)j(program.lp)515 1249 y(lparse)32 b FD(prin)n(ts)h(the)i(ground)e(rules)h(of)40 b FB(program.lp)30 b FD(to)k(standard)g(output)g(and)g(sends)515 1348 y(the)28 b(sym)n(b)r(ol)f(table)g(and)h FB(compute)d FD(statemen)n(t)i(to)h(the)g(\014le)f FB(atoms)p FD(.)639 1448 y(F)-7 b(or)25 b(example,)g(w)n(e)g(can)g(extract)g(the)h(sym)n(b) r(ol)e(table)i(of)f(Program)e(7.1)h(with)i(the)g(com-)515 1547 y(mand)h(line:)515 1711 y FB(\045)43 b(lparse)e(--atom-file)e (atoms)j(-c)g(max_a=2)f(test.lp)515 1811 y(1)i(1)g(1)g(1)g(2)515 1910 y(1)g(3)g(1)g(1)g(4)515 2010 y(1)g(2)g(1)g(1)g(1)515 2109 y(1)g(4)g(1)g(1)g(3)515 2209 y(1)g(5)g(0)g(0)515 2309 y(1)g(6)g(0)g(0)515 2472 y FD(The)21 b(rules)g(are)g(in)h FB(smodels)c FD(in)n(ternal)j(format.)35 b(The)21 b(most)g(in)n (teresting)g(rules)g(for)g(hac)n(king)515 2572 y(around)26 b(are)h(the)h(last)f(t)n(w)n(o)g(rules.)36 b(Rules)28 b(of)f(the)h(form:)722 2687 y FB(1)43 b(n)h(0)f(0)639 2786 y FD(denote)25 b(that)g(the)h(atom)e(n)n(um)n(b)r(er)h Fx(n)g FD(is)g(a)g(fact)g(in)g(the)g(program)e(\(i.e.,)j(there's)f(a)g (basic)515 2886 y(rule)i(with)h Fx(n)g FD(as)f(the)h(head)f(and)g(an)h (empt)n(y)f(b)r(o)r(dy)h(in)g(the)g(program\).)639 2986 y(After)g(the)g(preceeding)f(command)g(line)h(the)g FB(atoms)e FD(\014le)h(lo)r(oks)g(lik)n(e)g(this:)515 3149 y FB(1)43 b(c\(1\))515 3249 y(2)g(b\(1\))515 3348 y(3)g(c\(2\))515 3448 y(4)g(b\(2\))515 3548 y(5)g(a\(1\))515 3647 y(6)g(a\(2\))515 3747 y(0)515 3846 y(B+)515 3946 y(0)515 4046 y(B-)515 4145 y(0)515 4245 y(1)515 4408 y FD(The)27 b(\014rst)f(part)g(is)h(the) g(sym)n(b)r(ol)g(table)f(giving)g(the)h(represen)n(tation)f(for)g(eac)n (h)g(atom.)36 b(The)515 4508 y(part)23 b(after)g FB(B+)g FD(con)n(tains)g(the)h(atoms)f(that)g(ha)n(v)n(e)g(to)g(b)r(e)h(in)g(a) g(mo)r(del)f(\(the)i(zero)d(designates)515 4608 y(the)35 b(end)h(of)f(this)h(part\),)h(part)e(after)g FB(B-)f FD(con)n(tains)h(the)g(negativ)n(e)g FB(compute)d FD(statemen)n(t)515 4707 y(and)27 b(the)h(\014nal)g(line)f(giv)n(es)g(the)h(desired)f(n)n (um)n(b)r(er)g(of)h(mo)r(dels.)639 4807 y(The)d(easiest)f(w)n(a)n(y)f (to)h(mo)r(dify)h(grounded)f(programs)e(b)n(y)i(hands)g(is)h(to)f (ground)g(it)h(with)515 4907 y FB(external)k FD(declarations,)j(read)f (in)i(the)g(sym)n(b)r(ol)f(table)g(and)g FB(compute)e FD(statemen)n(t,)j(and)515 5006 y(add)27 b(some)g(of)h(the)g(external)f (atoms)f(as)h(facts)h(to)f(the)h(program.)1905 5255 y(72)p eop %%Page: 73 77 73 76 bop 515 523 a FA(7.5)135 b(Miscellanous)46 b(Tips)515 705 y FD(This)25 b(section)f(con)n(tains)h(a)f(few)i(miscellanous)e (tips)h(that)g(can)g(help)h(in)f(writing)h Fv(Smodels)515 805 y FD(programs.)44 b(Most)31 b(of)g(this)g(stu\013)h(is)f(also)f (men)n(tioned)h(elsewhere)f(in)h(the)g(man)n(ual,)g(but)h(I)515 904 y(though)n(t)h(that)h(it)g(w)n(ould)g(b)r(e)g(nice)g(to)f(collect)h (them)g(to)g(one)f(place.)55 b(This)34 b(section)f(will)515 1004 y(probably)28 b(increase)g(in)h(size)g(in)h(the)g(future)f (revisions)f(when)i(more)e(things)h(come)g(to)g(m)n(y)515 1103 y(mind.)515 1286 y FC(The)j FB(-t)f FC(option)722 1386 y FD(The)h FB(-t)f FD(is)g(probably)g(the)h(most)f(imp)r(ortan)n (t)g FB(lparse)e FD(command)j(line)f(option)h(as)722 1485 y(y)n(ou)i(can)g(use)h(it)g(to)f(see)g(what)h(actually)f(happ)r (ened)h(to)f(y)n(our)f(program)g(when)i(it)722 1585 y(w)n(en)n(t)28 b(through)e FB(lparse)p FD(.)515 1751 y FC(The)32 b FB(-d)f FC(option)722 1851 y FD(The)f(second)f(most)g(imp)r(ortan)n(t)h(option) f(is)g FB(-d)43 b(none)28 b FD(that)i(simpli\014es)g(the)g(output)722 1950 y(b)n(y)e(lea)n(ving)e(out)i(the)g(domain)f(predicates.)36 b(It)28 b(also)e(sp)r(eeds)i FB(smodels)c FD(a)k(little.)515 2116 y FC(Hide)j(declarations)722 2216 y FD(Another)d(w)n(a)n(y)f(ho)n (w)h(y)n(ou)f(can)h(get)g(simpler)g(mo)r(dels)g(is)g(to)g(use)g FB(hide)f FD(declarations)722 2316 y(lib)r(erally)-7 b(.)46 b(P)n(ostpro)r(cessing)29 b(the)i(answ)n(er)e(is)i(m)n(uc)n(h)g (easier)e(when)i(y)n(ou)f(don't)h(ha)n(v)n(e)722 2415 y(to)d(w)n(orry)d(ab)r(out)j(some)f(h)n(undreds)g(of)h(unin)n (teresting)f(atoms.)515 2581 y FC(Using)k(a)h(predicate)g(as)g(its)f(o) m(wn)h(condition)722 2681 y FD(Y)-7 b(ou)33 b(ma)n(y)f(use)h(a)f (domain)h(predicate)f(as)g(its)h(o)n(wn)f(condition)h(in)g(constrain)n (t)e(and)722 2780 y(w)n(eigh)n(t)c(literals.)36 b(F)-7 b(or)26 b(example,)h(y)n(ou)g(migh)n(t)g(w)n(an)n(t)f(to)h(sa)n(y)f (that)i(a)f(graph)f(is)h(big)g(if)722 2880 y(there)h(are)e(more)h(than) h(100)e(edges:)905 3029 y FB(big)p 1042 3029 27 4 v 30 w(graph)42 b(:-)g(101)h Fz(f)g FB(edge\(X,Y\))d(:)j(edge\(X,Y\))d Fz(g)p FB(.)1905 5255 y FD(73)p eop %%Page: 74 78 74 77 bop 515 1146 a Fw(Chapter)64 b(8)515 1561 y FE(F)-19 b(uture)77 b(Dev)-6 b(elopmen)g(t)515 1993 y FD(I)36 b(ha)n(v)n(e)e(a)i(couple)f(of)h(ideas)f(that)h(will)h(probably)d(b)r (e)j(included)f(in)g FB(lparse)d FD(some)j(da)n(y)-7 b(.)515 2092 y(They)27 b(include:)639 2258 y Fz(\017)41 b FD(Extended)28 b(supp)r(ort)h(for)e(data)h(t)n(yp)r(es.)39 b(I)29 b(vision)f(system)g(lik)n(e)g(one)g(that)g(is)g(used)h(in)722 2358 y(the)19 b(programming)e(language)g(Sc)n(heme,)j(that)f(is,)i(the) e(user)f(ma)n(y)g(freely)g(mix)h(normal)722 2457 y(in)n(tegers,)29 b(\015oating)g(p)r(oin)n(t)g(n)n(um)n(b)r(ers,)h(and)f(bign)n(ums)g (and)h(the)f(system)h(tak)n(es)e(care)722 2557 y(of)f(rest.)37 b(Ho)n(w)n(ev)n(er,)25 b(as)i(this)g(requires)f(rewriting)g(of)h(quite) h(large)d(parts)i(of)33 b FB(lparse)722 2657 y FD(co)r(de)28 b(this)g(will)f(not)h(happ)r(en)g(v)n(ery)e(so)r(on.)639 2823 y Fz(\017)41 b FD(Some)19 b(sort)f(of)h(uni\014ed)h(metho)r(d)f (for)g(setting)f(attributes)h(for)g(predicates,)h(lik)n(e)e(mark-)722 2922 y(ing)35 b(them)h(hidden,)h(setting)e(w)n(eigh)n(ts,)h(and)f(lik)n (e.)59 b(This)35 b(feature)f(w)n(ould)h(prev)n(en)n(t)722 3022 y(\\k)n(eyw)n(ord-p)r(ollution")19 b(that)k(has)e(b)r(een)i (threatening)g FB(lparse)c FD(lately)-7 b(.)35 b(The)22 b(feature)722 3122 y(will)34 b(b)r(e)f(implemen)n(ted)h(in)f(suc)n(h)g (w)n(a)n(y)f(that)i(it)f(will)g(b)r(e)h(easy)e(to)h(con)n(v)n(ert)f (curren)n(t)722 3221 y(programs)26 b(in)n(to)h(new)h(format)f (automatically)-7 b(.)639 3387 y Fz(\017)41 b FD(P)n(ossibilit)n(y)29 b(of)g(using)h(predicates)f(that)h(o)r(ccur)f(as)h(head)f(of)h(a)f(sp)r (ecial)h(rule)f(as)h(do-)722 3487 y(main)e(predicates.)639 3653 y(If)k(y)n(ou)e(ha)n(v)n(e)g(some)h(suggestions)f(or)g(if)i(y)n (ou)e(found)i(a)e(bug)h(in)h FB(lparse)p FD(,)e(please)g(send)515 3753 y(email)d(it)h(for)f(me)h(\()p Fy(tommi.)39 b(syrjanen@hut.\014)9 b FD(\).)1905 5255 y(74)p eop %%Page: 75 79 75 78 bop 515 1146 a Fw(App)5 b(endix)65 b(A)515 1561 y FE(Smo)6 b(dels)77 b(API)515 1993 y FD(This)31 b(section)h(con)n (tains)e(a)h(brief)h(o)n(v)n(erview)e(of)h(the)h FB(smodels)d FD(programming)h(API.)h(The)515 2092 y(API)18 b(is)h(a)f(library)g(in)n (terface)g(that)h(allo)n(ws)e(a)h(C++)g(program)f(to)h(construct)h (logic)e(programs)515 2192 y(and)29 b(compute)h(their)g(stable)g(mo)r (dels.)43 b(Unfortunately)-7 b(,)31 b(the)f(curren)n(t)f(in)n(terface)g (is)h(quite)515 2291 y(unin)n(tuitiv)n(e)i(and)g(there's)g(no)f(easy)h (w)n(a)n(y)e(of)i(using)g(the)g(functionalit)n(y)g(of)39 b FB(lparse)30 b FD(with)515 2391 y(it,)e(so)g(in)g(practice)f(only)h (ground)f(programs)e(can)j(b)r(e)g(handled)g(con)n(v)n(enien)n(tly)-7 b(.)37 b(Ho)n(w)n(ev)n(er,)515 2491 y(the)25 b(in)n(tegration)f(of)h (these)g(functionalities)h(will)f(b)r(e)h(added)f(in)g(a)g(future)g(v)n (ersion)f(and)h(the)515 2590 y(library)h(in)n(terface)h(will)h(b)r(e)g (cleaned.)515 2865 y FA(A.1)134 b(Installing)47 b(and)d(Using)i(the)f (API)515 3047 y FD(Before)30 b(y)n(ou)g(can)h(use)f FB(smodels)f FD(as)h(a)g(library)g(y)n(ou)g(ha)n(v)n(e)g(to)h(compile)g(it)g(as)f (suc)n(h.)47 b(This)515 3146 y(can)27 b(b)r(e)h(ac)n(hiev)n(ed)e(b)n(y) i(t)n(yping:)722 3263 y FB(\045)43 b(make)f(lib)639 3362 y FD(in)25 b(the)f FB(smodels)e FD(source)h(directory)-7 b(.)34 b(The)25 b(library)d(build)j(pro)r(cess)e(uses)h(GNU)h(libto)r (ol)515 3462 y(that)j(should)f(b)r(e)h(installed)g(on)f(the)h(system.) 36 b(The)28 b(command:)722 3578 y FB(\045)43 b(make)f(libinstall)639 3678 y FD(will)36 b(then)h(install)f(the)g(libraries)e(to)i(a)g(path)g (that)g(is)g(sp)r(eci\014ed)g(in)g(the)g FB(Makefile)p FD(.)515 3777 y(The)27 b(default)h(path)f(is)g FB(/usr/local/lib)p FD(.)k(The)d(command)f(do)r(esn't)g(install)g(the)h(header)515 3877 y(\014les)j(an)n(ywhere,)h(so)f(they)h(should)g(either)f(b)r(e)h (copied)g(to)f(a)h(suitable)g(lo)r(cation)f(b)n(y)g(hand)515 3977 y(or)g(the)h(programs)e(should)h(b)r(e)i(compiled)f(with)g(the)g (`)p FB(-I)p FD(')g(compiler)f(option.)49 b(The)32 b(most)515 4076 y(imp)r(ortan)n(t)27 b(header)g(\014les)g(are)g(listed)h(in)g (Figure)f(A.1.)639 4176 y(If)j(the)f(compiler)g(and)g(link)n(er)f(can)h (\014nd)g(the)h(header)e(\014les)h(and)g(the)g FB(libsmodels.la)515 4275 y FD(\014le,)35 b(resp)r(ectiv)n(ely)-7 b(,)35 b(y)n(ou)e(can)g (link)h(the)g(library)e(to)i(y)n(our)e(programs)g(in)i(the)g(usual)f(w) n(a)n(y)-7 b(,)515 4375 y(using)27 b(the)h(`)p FB(-lsmodels)p FD(')c(argumen)n(t)j(to)g(instruct)h(the)g(link)n(er:)722 4491 y FB(\045)43 b(gcc)g(-o)g(foo)f(-I/smodels/heade)o(r/)o(pat)o(h)37 b(foo.cc)k(-lsmodels)639 4591 y FD(The)28 b FB(smodels)d FD(example)i(directory)f(con)n(tains)h(sev)n(eral)f(examples)h(on)g (API)g(use.)1905 5255 y(75)p eop %%Page: 76 80 76 79 bop 515 523 a FA(A.2)134 b(Header)46 b(Files)515 705 y FD(This)38 b(section)g(go)r(es)g(through)g(the)h(\014v)n(e)f (most)g(imp)r(ortan)n(t)g(header)g(\014les)h(and)f(presen)n(ts)515 805 y(imp)r(ortan)n(t)30 b(classes)f(and)i(metho)r(ds)g(that)f(are)g (de\014ned)h(in)g(them.)46 b(Ho)n(w)n(ev)n(er,)30 b(this)h(is)f(not)515 904 y(in)n(tended)36 b(to)g(b)r(e)h(a)e(complete)h(reference)f(but)i (it)f(is)g(more)g(lik)n(e)f(a)h(co)r(okb)r(o)r(ok)f(of)h(useful)515 1004 y(stu\013.)515 1236 y Fh(A.2.1)112 b Fa(defines.h)515 1389 y FD(The)41 b(most)f(imp)r(ortan)n(t)g(thing)h(in)g(the)g(header)f (\014le)h FB(defines.h)c FD(is)k(the)g(de\014nition)g(of)515 1489 y(di\013eren)n(t)27 b(rule)h(t)n(yp)r(es:)818 1614 y FC(t)t(y)t(p)t(e)t(d)t(e)t(f)55 b(e)-5 b(n)g(u)g(m)31 b Fz(f)906 1713 y FD(E)-7 b(N)g(D)g(R)g(U)g(L)g(E)g(,)910 1813 y(B)l(A)l(S)l(I)l(C)l(R)l(U)l(L)l(E)s(,)907 1912 y(C)h(O)g(N)g(S)g(T)g(R)g(A)g(I)g(N)g(T)g(R)g(U)g(L)g(E)d(,)908 2012 y(C)j(H)g(O)g(I)g(C)g(E)g(R)g(U)g(L)g(E,)905 2112 y(G)e(E)g(N)g(E)g(R)g(A)g(T)g(E)g(R)g(U)g(L)g(E)e(,)906 2211 y(W)i(E)g(I)g(G)g(H)g(T)g(R)g(U)g(L)g(E)j(,)909 2311 y(O)l(P)l(T)l(I)l(M)l(I)l(Z)l(E)l(R)l(U)l(L)l(E)821 2411 y Fz(g)55 b FD(R)t(u)t(l)t(e)t(T)t(y)t(p)t(e)21 b(;)639 2535 y(The)34 b(meaning)e(of)h(di\013eren)n(t)h(rule)f(t)n(yp)r (es)g(can)g(b)r(e)g(b)r(est)h(explained)f(b)n(y)g(sho)n(wing)f(the)515 2635 y(corresp)r(onding)25 b(logic)i(program)f(segmen)n(ts.)515 2817 y FC(ENDR)m(ULE)722 2917 y FD(An)f(ENDR)n(ULE)e(is)h(not)g(a)f (concrete)g(rule)h(but)g(it)g(is)g(used)g(as)f(a)h(placeholder)e(b)r (efore)722 3017 y(the)28 b(actual)f(rule)h(t)n(yp)r(e)f(is)h(decided.) 37 b(Y)-7 b(ou)28 b(don't)f(ha)n(v)n(e)g(to)g(w)n(orry)f(ab)r(out)i (it.)515 3183 y FC(BASICR)m(ULE)722 3282 y FD(A)g(basic)e(rule)h(is)g (a)g(normal)f(logic)h(programming)e(rule)i(that)g(do)r(esn't)g(con)n (tain)g(an)n(y)722 3382 y(constrain)n(t)g(or)f(w)n(eigh)n(t)h (literals.)36 b(F)-7 b(or)27 b(example,)h(a)f(rule)905 3531 y FB(a)43 b(:-)g(b1,)f(b2,)h(b3,)f(not)g(c1,)h(not)f(c2,)g(not)h (c3.)722 3664 y FD(is)28 b(a)f(basic)g(rule.)515 3830 y FC(CONSTRAINTR)m(ULE)722 3930 y FD(A)22 b(constrain)n(t)e(rule)h(has) g(a)g(basic)f(literal)h(as)g(its)g(head)g(and)g(its)h(tail)f(is)g(one)g (constrain)n(t)722 4030 y(literal)27 b(with)h(only)g(a)f(lo)n(w)n(er)f (b)r(ound.)37 b(F)-7 b(or)27 b(example,)g(the)h(rule)p 878 4215 2138 4 v 928 4285 a FB(api.h)315 b FD(F)-7 b(unctions)28 b(for)f(creating)g(logic)f(programs)928 4384 y FB(atomrule.h)95 b FD(De\014nitions)28 b(of)g(atoms)f(and)g(rules)928 4484 y FB(defines.h)139 b FD(General)27 b(de\014nitions)928 4584 y FB(stable.h)183 b FD(F)-7 b(unctions)28 b(for)f(reading)g (programs)e(from)i(\014les)928 4683 y FB(smodels.h)139 b FD(F)-7 b(unctions)28 b(for)f(computing)h(stable)f(mo)r(dels)p 878 4716 V 1153 4948 a(Figure)g(A.1:)37 b(Imp)r(ortan)n(t)27 b FB(smodels)e FD(header)i(\014les)1905 5255 y(76)p eop %%Page: 77 81 77 80 bop 905 523 a FB(a)43 b(:-)g(2)g Fz(f)g FB(b1,)f(b2,)h(b3,)f(not) h(c1,)f(not)g(c2,)h(not)f(c3)h Fz(g)p FB(.)722 655 y FD(is)28 b(a)f(constrain)n(t)f(rule.)515 821 y FC(CHOICER)m(ULE)722 920 y FD(A)k(c)n(hoice)e(rule)h(has)f(a)h(constrain)n(t)f(literal)g (with)i(no)e(b)r(ounds)h(as)g(its)g(head)g(and)g(the)722 1020 y(b)r(o)r(dy)f(has)f(only)g(basic)g(literals:)905 1168 y Fz(f)43 b FB(a1,)f(a2,)h(a3)f Fz(g)i FB(:-)e(b1,)h(b2,)f(b3,)g (not)h(c1,)f(not)g(c2,)h(not)f(c3.)515 1333 y FC(GENERA)-8 b(TER)m(ULE)722 1433 y FD(Generate)37 b(rules)h(are)e(not)i(used)g(an)n (ymore)e(since)i(their)g(seman)n(tics)f(couldn't)h(b)r(e)722 1533 y(de\014ned)28 b(in)g(a)f(nice)h(w)n(a)n(y)-7 b(.)515 1698 y FC(WEIGHTR)m(ULE)722 1797 y FD(A)28 b(w)n(eigh)n(t)g(rule)f(is)h (otherwise)f(similar)g(to)h(a)f(constrain)n(t)g(rule)g(but)i(ev)n(ery)d (literal)i(in)722 1897 y(the)g(tail)g(should)f(ha)n(v)n(e)g(an)g (explicit)h(w)n(eigh)n(t)f(de\014ned)h(for)f(it.)37 b(F)-7 b(or)27 b(example,)905 2045 y FB(a)43 b(:-)g(2)g([)g(b1=1,b2=2,b3=3,no) o(t)37 b(c1=1,not)k(c2=2,not)f(c3=3)i(].)515 2210 y FC(OPTIMIZER)m(ULE) 722 2310 y FD(An)33 b(optimize)g(rule)f(handles)g(minimize)h(and)g (maximize)f(statemen)n(ts.)51 b(Ho)n(w)n(ev)n(er,)722 2410 y(only)26 b(minimization)g(is)g(explicitly)h(mo)r(deled)f(and)g (maximization)f(has)h(to)g(b)r(e)g(done)722 2509 y(b)n(y)36 b(negating)f(all)h(literals)f(in)h(the)g(rule)g(b)r(o)r(dy)-7 b(.)62 b(Also,)38 b(ev)n(ery)c(literal)i(in)g(the)g(rule)722 2609 y(b)r(o)r(dy)28 b(needs)g(a)f(w)n(eigh)n(t)g(de\014nition)h(for)f (it.)515 2841 y Fh(A.2.2)112 b Fa(api.h)515 2994 y FD(The)35 b(header)g(\014le)g FB(api.h)f FD(con)n(tains)g(the)i(class)f(Api)g (that)h(can)f(b)r(e)h(used)f(to)h(create)e(and)515 3094 y(manipulate)27 b(logic)g(programs.)35 b(The)27 b(class)g(has)g(the)h (follo)n(wing)e(metho)r(ds:)515 3258 y FC(Constructor)722 3358 y FD(The)i(constructor)e(of)i(the)g(Api)g(class)e(is:)1124 3482 y(A)t(p)t(i)55 b(\()24 b(P)t(r)t(o)t(g)t(r)t(a)t(m)45 b Fz(\003)20 b FD(p)5 b(r)22 b(\))11 b(;)722 3639 y(The)30 b(class)f(Program)e(is)j(de\014ned)g(in)g(the)g(header)f FB(program.h)d FD(and)k(it)g(is)g(not)f(nec-)722 3738 y(essary)h(to)g(kno)n(w)g(ab)r(out)h(its)g(in)n(ternal)g(details)f(to)h (b)r(e)h(able)e(to)h(use)g(the)g(API.)g(The)722 3838 y(only)g(thing)g(that)g(y)n(ou)g(need)g(to)g(ensure)f(is)h(that)g(an)g (Api)g(has)g(a)g(v)-5 b(alid)31 b(p)r(oin)n(ter)f(to)722 3938 y(use.)37 b(In)28 b(practice,)f(most)h(often)g(y)n(ou)f(w)n(an)n (t)g(to)g(use)h(a)f(program)f(that)i(is)g(tied)g(to)f(an)722 4037 y(instance)j(of)h(the)f(Smo)r(dels)h(class)e(that)i(will)f(b)r(e)h (presen)n(ted)f(b)r(elo)n(w.)44 b(So)30 b(an)g(Api)h(is)722 4137 y(usually)c(created)g(using)g(the)h(follo)n(wing)f(commands:)1127 4261 y(S)6 b(m)g(o)g(d)g(e)g(l)g(s)68 b(s)7 b(m)g(o)g(d)g(e)g(l)g(s)25 b(;)1124 4361 y(A)t(p)t(i)65 b(a)8 b(p)g(i)15 b(\()q(&)9 b(s)e(m)g(o)g(d)g(e)g(l)g(s)25 b(.)e(p)5 b(r)g(o)g(g)g(r)g(a)g(m)17 b(\))11 b(;)722 4518 y(Y)-7 b(ou'll)29 b(get)e(a)h(segmen)n(tation)f (fault)i(if)f(the)h(p)r(oin)n(ter)e(is)h(not)g(v)-5 b(alid,)29 b(so)e(it)h(is)g(not)g(one)722 4617 y(of)g(those)f(hard-to-detect)g (bugs.)515 4782 y FC(Destructor)722 4882 y FD(The)h(destructor)f(of)g (the)h(class)f(is)g(simply:)1129 5006 y FC(v)8 b(i)g(r)g(t)g(u)g(a)g(l) 56 b FD(~)19 b(A)t(p)t(i)g(\()12 b(\))g(;)1905 5255 y(77)p eop %%Page: 78 82 78 81 bop 722 523 a FD(and)28 b(it)g(do)r(esn't)f(do)h(an)n(ything)f (sp)r(ecial.)515 689 y FC(Creating)k(Rules)722 789 y FD(The)d(rules)f(are)g(created)f(using)i(the)g(follo)n(wing)e(three)i (metho)r(ds:)1124 913 y FC(v)t(o)t(i)t(d)67 b FD(b)11 b(e)g(g)g(i)g(n)p 1637 913 25 4 v 54 w(r)g(u)g(l)g(e)71 b(\()24 b(R)t(u)t(l)t(e)t(T)t(y)t(p)t(e)69 b(t)7 b(y)g(p)g(e)23 b(\))11 b(;)1124 1013 y FC(v)t(o)t(i)t(d)62 b FD(a)6 b(d)g(d)p 1533 1013 V 44 w(h)g(e)g(a)g(d)61 b(\()19 b(A)o(t)o(o)o(m)41 b Fz(\003)18 b FD(a)e(\))11 b(;)1124 1112 y FC(v)t(o)t(i)t(d)62 b FD(a)6 b(d)g(d)p 1533 1112 V 40 w(b)g(o)g(d)g(y)58 b(\()19 b(A)o(t)o(o)o(m)41 b Fz(\003)18 b FD(a)f(,)68 b FC(b)t(o)t(o)t(l)63 b FD(p)6 b(o)g(s)22 b(\))11 b(;)1124 1212 y FC(v)t(o)t(i)t(d)62 b FD(a)6 b(d)g(d)p 1533 1212 V 40 w(b)g(o)g(d)g(y)58 b(\()19 b(A)o(t)o(o)o(m)41 b Fz(\003)18 b FD(a)f(,)68 b FC(b)t(o)t(o)t(l)63 b FD(p)6 b(o)g(s)23 b(,)69 b(W)t(e)t(i)t(g)t(h)t(t)56 b(w)t(\))11 b(;)1124 1312 y FC(v)t(o)t(i)t(d)66 b FD(e)10 b(n)g(d)p 1544 1312 V 50 w(r)g(u)g(l)g(e)76 b(\()14 b(\))h(;)722 1469 y(The)33 b(p)r(ossible)f(rule)h(t)n(yp)r(es)f(are)g(describ)r(ed)g (in)h(the)g(ab)r(o)n(v)n(e)f(section.)51 b(When)33 b(using)722 1569 y(all)c(other)g(rule)g(t)n(yp)r(es)g(but)h(CHOICER)n(ULE)e(y)n(ou) h(ma)n(y)f(add)h(only)g(one)g(head)g(to)g(a)722 1669 y(rule.)36 b(The)26 b FB(pos)f FD(argumen)n(t)g(to)h(an)f FB(add)p 1966 1669 27 4 v 30 w(body)g FD(call)g(decides)h(whether)g (the)g(literal)f(is)722 1768 y(p)r(ositiv)n(e)i(or)g(negativ)n(e.)722 1984 y FC(Example)k(A.1)905 2150 y FD(The)d(rule)1060 2250 y FB(a)43 b(:-)g(b,)g(not)f(c.)905 2366 y FD(could)27 b(b)r(e)h(created)f(with)1311 2491 y(a)8 b(p)g(i)24 b(.)29 b(b)11 b(e)g(g)g(i)g(n)p 1769 2491 25 4 v 54 w(r)g(u)g(l)g(e)29 b(\()8 b(B)l(A)l(S)l(I)l(C)l(R)l(U)l(L)l(E)e(\))11 b(;)1311 2590 y(a)d(p)g(i)24 b(.)g(a)6 b(d)g(d)p 1666 2590 V 43 w(h)g(e)g(a)g(d)20 b(\()15 b(a)h(\))11 b(;)1311 2690 y(a)d(p)g(i)24 b(.)f(a)6 b(d)g(d)p 1665 2690 V 41 w(b)g(o)g(d)g(y)16 b(\()d(b)i(,)69 b FC(t)t(r)t(u)t(e)21 b FD(\))11 b(;)1311 2790 y(a)d(p)g(i)24 b(.)f(a)6 b(d)g(d)p 1665 2790 V 41 w(b)g(o)g(d)g(y)16 b(\()g(c)21 b(,)74 b FC(f)9 b(a)g(l)g(s)g(e)31 b FD(\))11 b(;)1311 2889 y(a)d(p)g(i)24 b(.)k(e)10 b(n)g(d)p 1677 2889 V 50 w(r)g(u)g(l)g(e)33 b(\()12 b(\))g(;)905 3030 y(supp)r(osing)25 b(that)h(the)g(A)n(toms)f FB(a)p FD(,)h FB(b)p FD(,)f(and)h FB(c)f FD(ha)n(v)n(e)f(b)r(een)i(de\014ned)g (accordingly)-7 b(.)905 3130 y Fi(\006)515 3296 y FC(Setting)31 b(b)s(ounds)722 3396 y FD(The)f(b)r(ounds)g(for)g(constrain)n(t)e(and)i (w)n(eigh)n(t)f(rules)h(can)f(b)r(e)h(de\014ned)h(using)e(the)h(fol-) 722 3495 y(lo)n(wing)d(t)n(w)n(o)g(functions:)1124 3620 y FC(v)t(o)t(i)t(d)68 b FD(s)12 b(e)g(t)p 1525 3620 V 54 w(a)g(t)g(l)g(e)g(a)g(s)g(t)p 1892 3620 V 54 w(b)g(o)g(d)g(y)71 b(\()25 b FC(l)t(o)t(n)t(g)18 b FD(\))11 b(;)1124 3719 y FC(v)t(o)t(i)t(d)69 b FD(s)13 b(e)g(t)p 1528 3719 V 54 w(a)g(t)g(l)g(e)g(a)g(s)g(t)p 1900 3719 V 53 w(w)g(e)g(i)g(g)g(h)g (t)72 b(\()24 b(W)t(e)t(i)t(g)t(h)t(t)d(\))11 b(;)722 3877 y(Curren)n(tly)27 b(the)h(t)n(yp)r(e)g FB(Weight)d FD(is)i(de\014ned)h(with)g(a)g(t)n(yp)r(edef:)1125 4002 y FC(t)t(y)t(p)t(e)t(d)t(e)t(f)63 b(u)s(n)s(s)s(i)s(g)s(n)s(e)s(d)d(l)t (o)t(n)t(g)h FD(W)t(e)t(i)t(g)t(h)t(t)19 b(;)722 4159 y(Note)28 b(that)g(b)r(oth)g(of)f(these)h(functions)g(ha)n(v)n(e)e(to)i (b)r(e)g(called)f(b)r(efore)g FB(end)p 2991 4159 27 4 v 30 w(rule\(\))p FD(.)515 4325 y FC(Creating)k(and)i(Manipulating)e(A) m(toms)722 4425 y FD(There)23 b(are)g(\014v)n(e)g(functions)h(that)g (can)f(b)r(e)h(used)g(to)f(create)g(and)g(manipulate)h(atoms.)1129 4550 y FC(v)8 b(i)g(r)g(t)g(u)g(a)g(l)62 b FD(A)o(t)o(o)o(m)41 b Fz(\003)19 b FD(n)t(e)t(w)p 1982 4550 25 4 v 39 w(a)t(t)t(o)t(m)63 b(\()15 b(\))f(;)1124 4649 y FC(v)t(o)t(i)t(d)63 b FD(s)7 b(e)g(t)p 1505 4649 V 45 w(n)g(a)g(m)g(e)63 b(\()19 b(A)o(t)o(o)o(m)41 b Fz(\003)18 b FD(a)f(,)69 b FC(c)t(o)t(n)t(s)t(t)63 b(c)s(h)s(a)s(r)50 b Fz(\003)16 b FD(n)q(a)q(m)q(e)c(\))f(;)1120 4749 y(A)o(t)o(o)o(m)41 b Fz(\003)22 b FD(g)7 b(e)g(t)p 1564 4749 V 45 w(a)g(t)g(o)g(m)63 b(\()24 b FC(c)t(o)t(n)t(s)t(t)64 b(c)s(h)s(a)s(r)50 b Fz(\003)16 b FD(n)q(a)q(m)q(e)c(\))f(;)1124 4848 y FC(v)t(o)t(i)t(d)64 b FD(s)8 b(e)g(t)p 1509 4848 V 47 w(c)g(o)g(m)g(p)g(u)g(t)g(e)65 b(\()19 b(A)o(t)o(o)o(m)42 b Fz(\003)17 b FD(a)g(,)69 b FC(b)t(o)t(o)t(l)c FD(i)8 b(n)p 2813 4848 V 47 w(m)g(o)g(d)g(e)g(l)28 b(\))11 b(;)1124 4948 y FC(v)t(o)t(i)t(d)65 b FD(r)9 b(e)g(s)g(e)g(t)p 1601 4948 V 48 w(c)g(o)g(m)g(p)g(u)g(t)g(e)67 b(\()19 b(A)o(t)o(o)o(m)41 b Fz(\003)18 b FD(a)f(,)68 b FC(b)t(o)t(o)t(l)e FD(i)8 b(n)p 2913 4948 V 47 w(m)g(o)g(d)g(e)g(l)28 b(\))11 b(;)1905 5255 y(78)p eop %%Page: 79 83 79 82 bop 722 523 a FD(The)28 b FB(new)p 1030 523 27 4 v 30 w(atom\(\))d FD(function)j(creates)e(a)h(new)g(atom)g(and)g (returns)g(a)f(p)r(oin)n(ter)h(to)h(it.)722 623 y(The)d(atom)f(do)r (esn't)g(ha)n(v)n(e)g(a)g(name)g(assigned)f(to)h(it)h(and)f(it)h(has)f (to)g(b)r(e)h(set)g(with)g(the)722 722 y FB(set)p 859 722 V 30 w(name\(\))c FD(function.)37 b(Note)23 b(that)h(y)n(ou)f(ha)n (v)n(e)f(to)h(call)g(the)h FB(remember\(\))19 b FD(function)722 822 y(b)r(efore)30 b(y)n(ou)g(can)g(de\014ne)g(names.)45 b(If)30 b(y)n(ou)g(kno)n(w)f(a)h(textual)h(represen)n(tation)d(of)i(an) 722 922 y(atom,)g(y)n(ou)e(can)h(get)h(a)f(p)r(oin)n(ter)g(to)g(it)h (with)g(the)f FB(get)p 2432 922 V 31 w(atom)e FD(function.)43 b(Note)30 b(that)722 1021 y FB(get)p 859 1021 V 30 w(atom)c FD(returns)h(NULL)h(if)g(no)g(suc)n(h)f(atom)g(is)h(de\014ned.)722 1148 y(The)c(t)n(w)n(o)f(last)g(functions)h(are)e(used)i(to)f(de\014ne) h(the)g(compute)f(statemen)n(t.)36 b(A)24 b(state-)722 1247 y(men)n(t)1129 1366 y(s)8 b(e)g(t)p 1260 1366 25 4 v 47 w(c)g(o)g(m)g(p)g(u)g(t)g(e)24 b(\()14 b(a)k(,)68 b FC(t)t(r)t(u)t(e)21 b FD(\))11 b(;)722 1511 y(asserts)26 b(that)i(the)g(atom)f FB(a)h FD(has)f(to)g(b)r(e)h(true)g(in)g(the)g (mo)r(dels.)36 b(Corresp)r(ondingly)-7 b(,)1129 1629 y(s)8 b(e)g(t)p 1260 1629 V 47 w(c)g(o)g(m)g(p)g(u)g(t)g(e)24 b(\()14 b(a)k(,)73 b FC(f)9 b(a)g(l)g(s)g(e)31 b FD(\))11 b(;)722 1774 y(asserts)27 b(that)h(it)g(m)n(ust)g(b)r(e)h(false.)37 b(If)29 b(neither)f(statemen)n(t)g(is)g(giv)n(en,)f(the)h(atom)g(ma)n (y)722 1874 y(b)r(e)21 b(true)f(or)f(false.)34 b(If)21 b(b)r(oth)f(are)g(giv)n(en,)h(the)f(result)g(is)g(an)g(immediate)g(con) n(tradiction.)722 2000 y(The)25 b(last)f(function)g(can)g(b)r(e)h(used) f(to)g(remo)n(v)n(e)f(an)h(atom)g(from)g(the)g(compute)h(state-)722 2100 y(men)n(t.)71 b(The)39 b(b)r(o)r(olean)f(argumen)n(t)g(is)h(used)f (to)h(indicate)g(whether)g(the)g(atom)f(is)722 2200 y(remo)n(v)n(ed)26 b(from)i(the)g(p)r(ositiv)n(e)f(or)f(the)i(negativ)n(e)f(compute)h (list.)722 2378 y FC(Example)j(A.2)905 2531 y FD(Supp)r(ose)21 b(that)g(y)n(ou)g(w)n(an)n(t)f(to)h(de\014ne)g(an)g(atom)g Fx(a)g FD(and)g(demand)g(that)g(it)h(has)e(to)905 2631 y(b)r(e)27 b(true)f(in)g(all)g(mo)r(dels.)37 b(Then)26 b(y)n(ou)g(can)g(do)g(it)g(with)h(the)g(program)d(snipp)r(et:)1411 2749 y(a)8 b(p)g(i)23 b(.)f(r)t(e)t(m)t(e)t(m)t(b)t(e)t(r)c(\()12 b(\))g(;)1402 2849 y(A)o(t)o(o)o(m)41 b Fz(\003)18 b FD(a)44 b(=)53 b(a)8 b(p)g(i)24 b(.)e(n)t(e)t(w)p 2265 2849 V 38 w(a)t(t)t(o)t(m)e(\()12 b(\))g(;)1411 2948 y(a)c(p)g(i)23 b(.)j(s)7 b(e)g(t)p 1738 2948 V 45 w(n)g(a)g(m)g(e)21 b(\()14 b(a)k(,)67 b(")8 b(a)f(")17 b(\))11 b(;)1411 3048 y(a)d(p)g(i)23 b(.)k(s)8 b(e)g(t)p 1742 3048 V 46 w(c)g(o)g(m)g(p)g(u)g(t)g(e)24 b(\()15 b(a)i(,)69 b FC(t)t(r)t(u)t(e)21 b FD(\))11 b(;)3324 3176 y Fi(\006)515 3330 y FC(Handling)31 b(A)m(tom)f(Names)722 3429 y FD(There)e(are)g(t)n(w)n(o)g(functions)h (that)g(con)n(trol)e(whether)i(atom)f(names)g(are)g(allo)n(w)n(ed)f(or) 722 3529 y(not:)1124 3647 y FC(v)t(o)t(i)t(d)60 b FD(r)t(e)t(m)t(e)t(m) t(b)t(e)t(r)h(\()14 b(\))h(;)1124 3747 y FC(v)t(o)t(i)t(d)67 b FD(f)11 b(o)g(r)g(g)g(e)g(t)77 b(\()15 b(\))f(;)722 3892 y(Y)-7 b(ou)39 b(can)g(call)g FB(remember\(\))34 b FD(when)40 b(y)n(ou)e(w)n(an)n(t)g(to)h(use)g(names)f(for)h(atoms)f (and)722 3992 y FB(forget\(\))25 b FD(when)i(y)n(ou)g(w)n(an)n(t)g(to)h (get)f(rid)g(of)h(them.)515 4145 y FC(Miscellanous)h(F)-8 b(unctions)1124 4363 y(v)t(o)t(i)t(d)61 b FD(c)5 b(o)g(p)g(y)58 b(\()23 b(A)t(p)t(i)50 b Fz(\003)18 b FD(a)s(p)f(\))11 b(;)1124 4463 y FC(v)t(o)t(i)t(d)61 b FD(d)5 b(o)g(n)g(e)64 b(\()14 b(\))g(;)722 4608 y(The)26 b(function)h FB(copy\(\))d FD(generates)g(a)i(new)g(cop)n(y)f(of)h(the)h(Api)g(that)f(is)g(giv)n (en)f(as)h(the)722 4707 y(argumen)n(t.)54 b(The)33 b(function)h FB(done\(\))d FD(is)i(called)g(when)h(all)f(rules)g(of)g(the)h(program) 722 4807 y(ha)n(v)n(e)g(b)r(een)h(constructed.)57 b(This)35 b(is)f(used)h(to)f(signal)g(the)h(Api)g(class)f(that)g(it)h(can)722 4907 y(no)n(w)d(create)g(the)h(in)n(ternal)f(data)g(structures)f(for)i (the)f(program.)50 b(Y)-7 b(ou)33 b(can't)f(add)722 5006 y(new)c(rules)f(or)g(atoms)g(to)g(an)g(Api)h(after)g(the)g FB(done\(\))d FD(call.)1905 5255 y(79)p eop %%Page: 80 84 80 83 bop 639 523 a FD(The)32 b(follo)n(wing)f(co)r(de)h(example)f(is)h (based)g(on)f(the)i(\014le)f FB(example.cc)27 b FD(that)33 b(is)e(in)i(the)515 623 y FB(examples)24 b FD(directory)i(of)i(the)g FB(smodels)d FD(distribution.)515 805 y FC(Example)30 b(A.3)722 971 y FD(W)-7 b(e)28 b(will)g(create)f(the)h(Api)g(represen)n (tation)e(of)h(the)h(simple)g(program:)905 1121 y FB(a)43 b(:-)g(not)f(b.)87 b(b)43 b(:-)f(not)h(a.)86 b(compute)e(a)44 b(.)722 1254 y FD(The)28 b(resulting)f(C++)g(co)r(de)g(is:)1114 1378 y(#)n(i)10 b(n)g(c)g(l)g(u)g(d)g(e)73 b(")12 b(s)7 b(m)g(o)g(d)g(e)g(l)g(s)26 b(.)19 b(h)5 b(")1114 1478 y(#)n(i)10 b(n)g(c)g(l)g(u)g(d)g(e)73 b(")13 b(a)8 b(p)g(i)23 b(.)c(h)6 b(")1127 1577 y FC(i)h(n)g(t)65 b FD(m)s(a)s(i)s(n)58 b(\()11 b(\))1124 1677 y Fz(f)1226 1777 y FD(S)6 b(m)g(o)g(d)g(e)g(l)g (s)68 b(s)7 b(m)g(o)g(d)g(e)g(l)g(s)26 b(;)1224 1876 y(A)t(p)t(i)64 b(a)8 b(p)g(i)53 b(\()5 b(&)17 b(s)7 b(m)g(o)g(d)g(e)g (l)g(s)25 b(.)e(p)5 b(r)g(o)g(g)g(r)g(a)g(m)18 b(\))11 b(;)1227 2076 y Fy(/)c(/)55 b(K)s(e)s(e)s(p)65 b(t)10 b(r)g(a)g(c)g(k)76 b(o)8 b(f)69 b(a)s(t)s(o)s(m)60 b(n)s(a)s(m)s(e)s(s) 1228 2175 y FD(a)8 b(p)g(i)24 b(.)e(r)t(e)t(m)t(e)t(m)t(b)t(e)t(r)61 b(\()14 b(\))g(;)1227 2374 y Fy(/)7 b(/)60 b(D)8 b(e)g(f)g(i)g(n)g(e)73 b(t)8 b(h)g(e)72 b(a)5 b(t)g(o)g(m)g(s)1219 2474 y FD(A)o(t)o(o)o(m)42 b Fz(\003)17 b FD(a)45 b(=)52 b(a)8 b(p)g(i)24 b(.)e(n)t(e)t(w)p 2082 2474 25 4 v 38 w(a)t(t)t(o)t(m)64 b(\()14 b(\))h(;)1219 2574 y(A)o(t)o(o)o(m)42 b Fz(\003)16 b FD(b)42 b(=)52 b(a)8 b(p)g(i)24 b(.)e(n)t(e)t(w)p 2082 2574 V 38 w(a)t(t)t(o)t(m)64 b(\()14 b(\))h(;)1228 2673 y(a)8 b(p)g(i)24 b(.)h(s)7 b(e)g(t)p 1555 2673 V 45 w(n)g(a)g(m)g(e)63 b(\()23 b(a)17 b(,)67 b(")8 b(a)g(")16 b(\))11 b(;)1228 2773 y(a)d(p)g(i)24 b(.)h(s)7 b(e)g(t)p 1555 2773 V 45 w(n)g(a)g(m)g(e)63 b(\()21 b(b)15 b(,)67 b(")6 b(b)g(")16 b(\))11 b(;)1227 2972 y Fy(/)c(/)62 b(d)10 b(e)g(f)g(i)g(n)g(e)82 b(t)8 b(h)g(e)77 b(r)10 b(u)g(l)g(e)72 b(a)52 b(:)8 b Fz(\000)62 b Fy(n)7 b(o)g(t)65 b(b)1228 3072 y FD(a)8 b(p)g(i)24 b(.)29 b(b)11 b(e)g(g)g(i)g(n)p 1686 3072 V 54 w(r)g(u)g(l)g(e)70 b(\()17 b(B)l(A)l(S)l(I)l(C)l(R)l(U)l(L)l(E)6 b(\))11 b(;)1228 3171 y(a)d(p)g(i)24 b(.)g(a)6 b(d)g(d)p 1583 3171 V 43 w(h)g(e)g(a)g(d)62 b(\()23 b(a)16 b(\))11 b(;)1228 3271 y(a)d(p)g(i)24 b(.)f(a)6 b(d)g(d)p 1582 3271 V 41 w(b)g(o)g(d)g(y)58 b(\()21 b(b)15 b(,)74 b FC(f)9 b(a)g(l)g(s)g(e)30 b FD(\))11 b(;)1228 3371 y(a)d(p)g(i)24 b(.)k(e)10 b(n)g(d)p 1594 3371 V 50 w(r)g(u)g(l)g(e)76 b(\()14 b(\))g(;)1227 3470 y Fy(/)7 b(/)55 b(a)t(n)t(d)61 b(b)54 b(:)8 b Fz(\000)62 b Fy(n)7 b(o)g(t)64 b(a)13 b(.)1228 3570 y FD(a)8 b(p)g(i)24 b(.)29 b(b)11 b(e)g(g)g(i)g(n)p 1686 3570 V 54 w(r)g(u)g(l)g(e)70 b(\()17 b(B)l(A)l(S)l(I)l(C)l(R)l(U)l(L)l(E)6 b(\))11 b(;)1228 3670 y(a)d(p)g(i)24 b(.)g(a)6 b(d)g(d)p 1583 3670 V 43 w(h)g(e)g(a)g(d)62 b(\()21 b(b)14 b(\))d(;)1228 3769 y(a)d(p)g(i)24 b(.)f(a)6 b(d)g(d)p 1582 3769 V 41 w(b)g(o)g(d)g(y)58 b(\()23 b(a)17 b(,)74 b FC(f)9 b(a)g(l)g(s)g(e)30 b FD(\))11 b(;)1228 3869 y(a)d(p)g(i)24 b(.)k(e)10 b(n)g(d)p 1594 3869 V 50 w(r)g(u)g(l)g(e)76 b(\()14 b(\))g(;)1227 4068 y Fy(/)7 b(/)57 b(c)5 b(o)g(m)g(p)g(u)g(t)g(e)71 b(s)9 b(t)g(a)g(t)g(e)g(m)g(e)g(n)g(t)1228 4168 y FD(a)f(p)g(i)24 b(.)i(s)8 b(e)g(t)p 1559 4168 V 47 w(c)g(o)g(m)g(p)g(u)g(t)g(e)23 b(\()15 b(a)i(,)69 b FC(t)t(r)t(u)t(e)21 b FD(\))11 b(;)1227 4367 y Fy(/)c(/)63 b(s)11 b(i)g(g)g(n)g(a)g(l)84 b(t)8 b(h)g(e)71 b(e)t(n)t(d)1228 4467 y FD(a)8 b(p)g(i)24 b(.)e(d)5 b(o)g(n)g(e)21 b(\()12 b(\))g(;)1124 4566 y Fz(g)3324 4724 y Fi(\006)1905 5255 y FD(80)p eop %%Page: 81 85 81 84 bop 515 523 a Fh(A.2.3)112 b Fa(atomrule.h)515 676 y FD(The)36 b(header)f(\014le)h FB(atomrule.h)c FD(con)n(tains)j (the)h(de\014nitions)g(of)g(the)h(classes)d(A)n(tom)i(and)515 776 y(Rule.)g(Both)24 b(con)n(tain)f(lots)h(of)g(in)n(ternal)g(stu\013) g(that)h(is)f(not)g(necessary)e(for)i(using)g(the)g(API.)515 876 y(Ho)n(w)n(ev)n(er,)h(the)j(A)n(tom)g(class)f(con)n(tains)f(few)i (useful)g(metho)r(ds)g(and)f(attributes:)515 1058 y FC(Constructor)722 1158 y FD(The)h(constructor)e(is)i(de\014ned)f(as:)1120 1282 y(A)o(t)o(o)o(m)46 b(\()23 b(P)t(r)t(o)t(g)t(r)t(a)t(m)46 b Fz(\003)16 b FD(p)e(\))d(;)722 1440 y(The)28 b(argumen)n(t)f FB(p)g FD(is)g(a)g(p)r(oin)n(ter)h(to)f(the)h(program)e(where)h(the)h (atom)f(o)r(ccurs.)36 b(Y)-7 b(ou)722 1540 y(shouldn't)26 b(ha)n(v)n(e)d(to)i(create)g(atoms)f(directly)h(as)f(it)i(is)f(b)r (etter)g(to)g(use)g(the)h FB(new)p 3180 1540 27 4 v 30 w(atom)722 1639 y FD(metho)r(d)i(of)g(the)g(Api)g(class.)515 1805 y FC(Name)722 1905 y FD(The)g(name)f(of)h(an)f(atom)g(\(if)i (de\014ned\))f(can)f(b)r(e)h(obtained)g(with)g(the)g(metho)r(d:)1125 2030 y FC(c)t(o)t(n)t(s)t(t)64 b(c)s(h)s(a)s(r)50 b Fz(\003)18 b FD(a)t(t)t(o)t(m)p 1928 2030 25 4 v 36 w(n)t(a)t(m)t(e)62 b(\()14 b(\))g(;)515 2220 y FC(T)-8 b(ruth)33 b(v)-5 b(alue)722 2320 y FD(The)28 b(truth)g(v)-5 b(alue)27 b(of)h(an)f(atom)g(in)h(a)g(stable)f(mo)r(del)h(is)f(stored)g(in)h(t)n (w)n(o)e(attributes:)1125 2445 y FC(b)t(o)t(o)t(l)60 b FD(B)s(p)s(o)s(s)65 b(:)58 b(1)15 b(;)1125 2544 y FC(b)t(o)t(o)t(l)60 b FD(B)s(n)s(e)s(g)h(:)d(1)15 b(;)722 2702 y(The)27 b(v)-5 b(ariable)26 b FB(Bpos)f FD(is)h(true)h(when)g(the)g(atom)f(is)g(in)h (a)f(stable)h(mo)r(del)g(and)f FB(Bneg)f FD(is)722 2802 y(true)k(when)f(the)h(atom)f(is)g(not)h(in)g(the)f(mo)r(del.)40 b(If)29 b(b)r(oth)g(are)e(false,)i(then)g(the)g(atom)722 2901 y(is)f(neither)f(true)h(or)f(false.)36 b(Note)28 b(that)g(this)g(ma)n(y)e(not)i(o)r(ccur)f(in)h(normal)e(use.)515 3067 y FC(Compute)k(statemen)m(t)722 3167 y FD(The)h(follo)n(wing)f(t)n (w)n(o)h(attributes)f(con)n(trol)g(whether)h(an)g(atom)f(is)h(in)h(the) f(compute)722 3267 y(statemen)n(t:)1125 3391 y FC(b)t(o)t(o)t(l)62 b FD(c)5 b(o)g(m)g(p)g(u)g(t)g(e)g(T)g(r)g(u)g(e)66 b(:)58 b(1)15 b(;)1125 3491 y FC(b)t(o)t(o)t(l)64 b FD(c)7 b(o)g(m)g(p)g(u)g (t)g(e)g(F)g(a)g(l)g(s)g(e)74 b(:)58 b(1)14 b(;)722 3648 y(Y)-7 b(ou)28 b(can)f(also)g(use)g(the)h FB(set)p 1635 3648 27 4 v 30 w(compute)d FD(metho)r(d)j(of)g(the)g(Api)g(class)e(to)i (do)f(this.)515 3881 y Fh(A.2.4)112 b Fa(smodels.h)515 4034 y FD(The)25 b(header)g(\014le)h FB(smodels.h)c FD(con)n(tains)j (the)h(de\014nition)g(of)g(the)g(class)e(Smo)r(dels)i(that)g(im-)515 4134 y(plemen)n(ts)19 b(the)g(actual)f(computation)h(of)g(stable)g(mo)r (dels.)33 b(The)19 b(most)g(imp)r(ortan)n(t)g(metho)r(ds)515 4233 y(of)27 b(the)h(class)f(are:)515 4416 y FC(Constructor)1027 4640 y FD(S)6 b(m)g(o)g(d)g(e)g(l)g(s)67 b(\()14 b(\))g(;)722 4798 y(The)28 b(constructor)e(do)r(esn't)i(tak)n(e)f(an)n(y)f(argumen)n (ts.)1905 5255 y(81)p eop %%Page: 82 86 82 85 bop 515 523 a FC(Initialization)722 623 y FD(After)25 b(the)f(rules)g(of)g(a)g(logic)f(program)f(ha)n(v)n(e)h(b)r(een)i (generated)e(using)h(the)g(Api)h(class)722 722 y(that)31 b(is)g(tied)g(to)g(a)g(Smo)r(dels)f(instance,)i(the)f(computation)g (has)f(to)h(b)r(e)g(initialized)722 822 y(with)d(the)g(initialization)g (function:)1025 946 y FC(v)t(o)t(i)t(d)68 b FD(i)12 b(n)g(i)g(t)82 b(\()14 b(\))h(;)515 1137 y FC(Computation)722 1237 y FD(The)28 b(stable)f(mo)r(dels)h(are)e(computed)i(with)g(the)g FB(model)e FD(function.)928 1362 y FC(i)7 b(n)g(t)66 b FD(m)5 b(o)g(d)g(e)g(l)55 b(\()25 b FC(b)t(o)t(o)t(l)65 b FD(l)8 b(o)g(o)g(k)55 b(=)50 b FC(t)t(r)t(u)t(e)22 b FD(,)68 b FC(b)t(o)t(o)t(l)59 b FD(j)r(u)r(m)r(p)45 b(=)54 b FC(f)9 b(a)g(l)g(s)g(e)31 b FD(\))11 b(;)722 1519 y(The)37 b(function)h(returns)f(1)f(if)i(a)f(mo)r(del)g(is)g (found)h(and)f(0)f(if)i(there)f(are)f(no)h(more)722 1619 y(mo)r(dels.)46 b(Successiv)n(e)30 b(calls)f(return)i(all)f(mo)r(dels)g (of)h(the)g(program.)43 b(F)-7 b(or)30 b(example,)722 1719 y(the)e(co)r(de)g(snipp)r(et:)1025 1843 y FC(w)t(h)t(i)t(l)t(e)57 b FD(\()27 b(s)7 b(m)g(o)g(d)g(e)g(l)g(s)25 b(.)e(m)5 b(o)g(d)g(e)g(l)19 b(\()12 b(\))g(\))52 b Fz(f)1128 1943 y Fy(/)7 b(/)55 b(d)t(o)65 b(s)8 b(o)g(m)g(e)g(t)g(h)g(i)g(n)g(g)1024 2042 y Fz(g)722 2200 y FD(can)27 b(b)r(e)i(used)e(to)h(generate)e(all)h (stable)g(mo)r(dels.)722 2333 y(The)39 b(argumen)n(ts)f(to)g(the)i (function)f(con)n(trol)e(whether)i(lo)r(ok)-5 b(ahead)38 b(heuristics)g(is)722 2433 y(used)29 b(and)g(whether)g(bac)n(kjumping)f (tec)n(hniques)h(are)f(enabled.)40 b(Lo)r(ok)-5 b(ahead)28 b(helps)722 2532 y(in)36 b(most)f(programs)e(so)i(it)h(is)f(usually)g (a)g(go)r(o)r(d)f(idea)h(to)g(lea)n(v)n(e)f(it)i(on.)60 b(Ho)n(w)n(ev)n(er,)722 2632 y(the)28 b(algorithm)f(is)g(quadratic)f (and)i(with)g(programs)d(that)j(ha)n(v)n(e)e(\\easy")g(structure)722 2731 y(ma)n(y)k(b)r(e)h(slo)n(w)n(er)d(with)j(it.)46 b(Bac)n(kjumping)29 b(is)h(sometimes)g(w)n(orth)n(wile)g(but)h(usually) 722 2831 y(it)d(costs)f(more)g(than)h(it)g(helps)f(so)g(it)h(is)g (o\013)f(b)n(y)h(default.)515 2997 y FC(Examining)i(Mo)s(dels)722 3230 y FD(After)e(a)f(mo)r(del)h(has)f(b)r(een)h(computed,)g(it)g(can)f (b)r(e)h(prin)n(ted)g(with)g(the)g(function)1025 3354 y FC(v)t(o)t(i)t(d)63 b FD(p)7 b(r)g(i)g(n)g(t)g(A)g(n)g(s)g(w)g(e)g(r) 75 b(\()14 b(\))g(;)722 3512 y(If)25 b(y)n(ou)f(w)n(an)n(t)g(to)g(go)g (through)g(the)h(atoms)f(one)g(at)g(a)g(time,)i(y)n(ou)e(can)g(do)g(it) h(b)n(y)f(going)722 3611 y(through)g(the)i(atom)e(list)h(of)g(the)g (Program)d(comp)r(onen)n(t)j(using)f(the)h(follo)n(wing)f(co)r(de)722 3711 y(snipp)r(et:)1023 3836 y(N)r(o)r(d)r(e)47 b Fz(\003)17 b FD(n)r(d)43 b(=)53 b(s)7 b(m)g(o)g(d)g(e)g(l)g(s)25 b(.)e(p)5 b(r)g(o)g(g)g(r)g(a)g(m)15 b(.)23 b(a)5 b(t)g(o)g(m)g(s)15 b(.)23 b(h)5 b(e)g(a)g(d)21 b(\()12 b(\))g(;)1028 3935 y FC(f)7 b(o)g(r)72 b FD(\()60 b(;)77 b(n)r(d)59 b(;)73 b(n)r(d)43 b(=)k(n)r(d)l Fz(\000)-7 b Fx(>)e FD(n)7 b(e)g(x)g(t)63 b(\))52 b Fz(f)1132 4035 y FC(i)11 b(f)69 b FD(\()22 b(n)r(d)l Fz(\000)-7 b Fx(>)-13 b FD(a)r(t)r(o)r(m)n Fz(\000)-7 b Fx(>)-12 b FD(B)s(p)s(o)s(s)18 b(\))51 b Fz(f)70 b Fy(/)7 b(/)59 b(t)8 b(h)g(e)71 b(a)s(t)s(o)s(m)c(i)10 b(s)79 b(t)9 b(r)g(u)g(e)1227 4134 y(/)e(/)56 b(d)t(o)65 b(s)8 b(o)g(m)g(e)g(t)g(h)g(i)g(n)g(g)1128 4234 y Fz(g)58 b FC(e)8 b(l)g(s)g(e)75 b(i)11 b(f)70 b FD(\()22 b(n)r(d)l Fz(\000)-7 b Fx(>)-14 b FD(a)r(t)r(o)r(m)o Fz(\000)-7 b Fx(>)-13 b FD(B)s(n)s(e)s(g)15 b(\))51 b Fz(f)69 b Fy(/)7 b(/)60 b(t)8 b(h)g(e)70 b(a)s(t)s(o)s(m)d(i)10 b(s)83 b(f)13 b(a)g(l)g(s)g(e)1227 4334 y(/)7 b(/)56 b(d)t(o)65 b(s)8 b(o)g(m)g(e)g(t)g(h)g(i)g(n)g(g)1124 4433 y Fz(g)1024 4533 y(g)515 4724 y FC(Resetting)30 b(the)i(Computation)722 4956 y FD(The)c(function)1905 5255 y(82)p eop %%Page: 83 87 83 86 bop 1025 523 a FC(v)t(o)t(i)t(d)66 b FD(r)10 b(e)g(v)g(e)g(r)g(t) 78 b(\()14 b(\))g(;)722 681 y(undo)r(es)21 b(all)f(c)n(hanges)e(that)j (ha)n(v)n(e)e(b)r(een)i(done)f(after)g(calling)h FB(init\(\))p FD(.)32 b(In)20 b(particular,)722 780 y(it)h(will)g(destro)n(y)e(all)h (bac)n(ktrac)n(k)f(information)g(so)h(the)h(next)g FB(model\(\))c FD(call)k(will)f(again)722 880 y(\014nd)f(the)g(\014rst)f(mo)r(del.)34 b(This)18 b(call)h(is)f(useful)h(when)f(y)n(ou)g(w)n(an)n(t)g(to)g(use) g(man)n(y)g(compute)722 980 y(statemen)n(ts.)515 1146 y FC(Miscellanous)29 b(Bits)722 1378 y FD(The)22 b(next)h(functions)f (ma)n(y)g(b)r(e)g(useful)h(if)f(y)n(ou)g(w)n(an)n(t)f(to)h(do)g (something)g(sp)r(ecial)g(with)722 1478 y(the)27 b(logic)f(program.)34 b(They)27 b(are)e(called)h(b)n(y)h(the)f(ab)r(o)n(v)n(e)g(functions)g (but)h(sometimes)722 1577 y(it)h(ma)n(y)f(b)r(e)h(useful)g(to)g(call)f (them)h(indep)r(enden)n(tly)-7 b(.)1025 1702 y FC(v)t(o)t(i)t(d)63 b FD(s)8 b(e)g(t)g(u)g(p)71 b(\()14 b(\))h(;)1025 1802 y FC(v)t(o)t(i)t(d)65 b FD(s)10 b(e)g(t)g(u)g(p)p 1529 1802 25 4 v 50 w(w)g(i)g(t)g(h)p 1770 1802 V 50 w(l)g(o)g(o)g(k)g(a)g (h)g(e)g(a)g(d)73 b(\()14 b(\))h(;)722 1959 y(These)28 b(t)n(w)n(o)e(functions)i(simplify)g(the)g(program)e(b)n(y)h(\014rst)g (computing)h(a)f(deductiv)n(e)722 2059 y(closure)33 b(of)h(the)h(rules) f(and)g(then)g(dropping)g(all)g(unsatis\014able)f(atoms)h(and)g(rules) 722 2159 y(from)20 b(it.)35 b(The)21 b(latter)f(function)h(also)f(do)r (es)g(one)g(round)g(of)g(lo)r(ok)-5 b(ahead)20 b(examination.)1025 2283 y FC(b)t(o)t(o)t(l)71 b FD(c)13 b(o)g(n)g(f)g(l)g(i)g(c)g(t)84 b(\()15 b(\))f(;)722 2441 y(The)29 b FB(conflict\(\))d FD(function)j(c)n(hec)n(ks)f(whether)h(a)g(con)n(tradiction)f(is)h (found.)41 b(Also,)722 2540 y(if)33 b(optimize)g(statemen)n(ts)f(are)g (used,)h(this)g(function)g(c)n(hec)n(ks)f(whether)g(the)h(mo)r(del)722 2640 y(candidate)25 b(is)g(b)r(etter)g(than)g(the)g(curren)n(tly)f(b)r (est)i(found.)36 b(Note)25 b(that)g(this)g(function)722 2740 y(clears)i(the)h(con\015ict)f(\015ag)g(so)g(y)n(ou'll)g(ha)n(v)n (e)f(to)i(b)r(e)g(careful)f(with)h(it.)1025 2864 y FC(v)t(o)t(i)t(d)63 b FD(l)8 b(o)g(o)g(k)g(a)g(h)g(e)g(a)g(d)68 b(\()14 b(\))h(;)1025 2964 y FC(b)t(o)t(o)t(l)69 b FD(l)12 b(o)g(o)g(k)g(a)g(h)g(e)g(a)g(d)p 1753 2964 V 47 w(n)g(o)p 1905 2964 V 52 w(h)g(e)g(u)g(r)g(i)g(s)g(t)g (i)g(c)75 b(\()14 b(\))g(;)1025 3064 y FC(v)t(o)t(i)t(d)68 b FD(h)13 b(e)g(u)g(r)g(i)g(s)g(t)g(i)g(c)77 b(\()14 b(\))h(;)722 3221 y(The)28 b(t)n(w)n(o)f FB(lookahead)d FD(functions)29 b(c)n(ho)r(ose)d(what)i(literal)f(should)h(b)r(e)g (added)g(to)g(the)722 3321 y(mo)r(del)37 b(candidate.)62 b(The)37 b(index)f(n)n(um)n(b)r(er)g(of)h(the)f(c)n(hosen)g(atom)g(is)g (stored)f(in)n(to)722 3421 y(the)29 b(v)-5 b(ariable)27 b FB(hi)p 1271 3421 27 4 v 30 w(index)p FD(.)37 b(If)29 b(the)f(b)r(est)h(c)n(hoice)e(is)h(a)g(p)r(ositiv)n(e)f(literal,)h(the) h(b)r(o)r(olean)722 3520 y(v)-5 b(ariable)27 b FB(hi)p 1127 3520 V 30 w(is)p 1245 3520 V 31 w(positive)d FD(is)k(set)f(to)h(b) r(e)g(true,)f(otherwise)g(it)h(is)g(set)f(to)h(false.)1025 3645 y FC(v)t(o)t(i)t(d)60 b FD(e)5 b(x)g(p)g(a)g(n)g(d)64 b(\()14 b(\))g(;)722 3802 y(The)20 b(function)g FB(expand\(\))d FD(computes)i(the)i(deductiv)n(e)e(closure)g(of)h(the)g(atoms)f(whose) 722 3902 y(truth)28 b(v)-5 b(alue)28 b(is)f(kno)n(wn.)1028 4027 y FC(i)7 b(n)g(t)70 b FD(w)9 b(e)g(l)g(l)g(f)g(o)g(u)g(n)g(d)g(e)g (d)74 b(\()14 b(\))h(;)722 4184 y(This)21 b(function)h(computes)e(and)h (prin)n(ts)g(the)g(w)n(ell-founded)g(mo)r(del)g(of)g(the)g(program.) 1025 4309 y FC(v)t(o)t(i)t(d)60 b FD(s)5 b(e)g(t)g(T)g(o)g(B)g(T)g(r)g (u)g(e)57 b(\()19 b(A)o(t)o(o)o(m)41 b Fz(\003)18 b FD(a)e(\))11 b(;)1025 4408 y FC(v)t(o)t(i)t(d)63 b FD(s)7 b(e)g(t)g(T)g(o)g(B)g(F)g (a)g(l)g(s)g(e)66 b(\()19 b(A)o(t)o(o)o(m)41 b Fz(\003)17 b FD(a)g(\))11 b(;)722 4566 y(These)38 b(t)n(w)n(o)f(functions)h(can)f (b)r(e)h(used)g(to)f(set)h(truth)g(v)-5 b(alues)38 b(of)f(atoms)g (directly)-7 b(.)722 4666 y(Note)28 b(that)g(usually)f(it)h(is)f(b)r (etter)h(to)g(set)g(the)f(compute)h(statemen)n(t,)g(instead.)1905 5255 y(83)p eop %%Page: 84 88 84 87 bop 515 523 a Fh(A.2.5)112 b Fa(stable.h)515 676 y FD(The)36 b(header)e(\014le)i FB(stable.h)d FD(con)n(tains)i(the)h (class)e(Stable)i(that)g(can)g(b)r(e)g(used)f(to)h(read)515 776 y(logic)29 b(programs)g(from)h(\014les.)46 b(The)31 b(programs)d(should)i(b)r(e)h(stored)f(in)h FB(smodels)d FD(in)n(ternal)515 876 y(format)f(that)h(is)f(explained)g(in)h(Section) g(B.)37 b(The)27 b(imp)r(ortan)n(t)h(metho)r(ds)f(are:)515 1058 y FC(Constructor)722 1158 y FD(The)h(constructor)e(is)i(simply) 1030 1282 y(S)9 b(t)g(a)g(b)g(l)g(e)75 b(\()14 b(\))g(;)515 1473 y FC(Reading)31 b(programs)722 1706 y FD(Logic)c(programs)e(can)i (b)r(e)h(read)f(with)h(the)g(metho)r(d)1028 1830 y FC(i)7 b(n)g(t)68 b FD(r)7 b(e)g(a)g(d)61 b(\()29 b(i)9 b(s)g(t)g(r)g(e)g(a)g (m)48 b(&)12 b(f)28 b(\))11 b(;)722 1988 y(The)28 b(argumen)n(t)e FB(f)i FD(should)f(b)r(e)h(b)r(ound)g(to)g(the)g(\014le)f(storing)g (the)h(program.)515 2220 y Fh(A.2.6)112 b(Example)515 2374 y FD(This)34 b(section)h(con)n(tains)e(an)i(example)f(API)g (function)i(that)f(can)f(b)r(e)h(used)f(to)h(compute)515 2473 y(partial)23 b(mo)r(dels)i(of)f(logic)f(program,)g(not)i(in)g(the) f(sense)g(of)h(Section)f(4.8,)g(but)h(in)g(the)g(sense)515 2573 y(that)32 b(it)g(will)g(\014nd)g(a)f(partial)g(mo)r(del)g (candidate)h(that)g(can)f(p)r(ossibly)g(b)r(e)h(extended)g(to)f(a)515 2673 y(full)36 b(stable)g(mo)r(del.)62 b(This)36 b(kind)g(of)g (function)g(ma)n(y)f(b)r(e)i(useful)f(when)g(the)g(program)e(is)515 2772 y(large)26 b(and)h(w)n(e)h(w)n(an)n(t)f(to)g(construct)g(the)h(mo) r(del)g(in)n(teractiv)n(ely)-7 b(.)639 2872 y(F)g(or)28 b(con)n(v)n(eniet)n(y)-7 b(,)27 b(this)h(function)g(is)g(added)g(to)g (the)g(Smo)r(dels)g(class,)g(but)g(it)h(migh)n(t)f(b)r(e)515 2971 y(used)f(also)g(outside)g(it.)718 3096 y FC(b)t(o)t(o)t(l)63 b FD(S)6 b(m)g(o)g(d)g(e)g(l)g(s)24 b(:)13 b(:)38 b(p)11 b(a)g(r)g(t)g(i)g(a)g(l)p 1742 3096 25 4 v 49 w(m)g(o)g(d)g(e)g(l)71 b(\()11 b(\))717 3196 y Fz(f)821 3295 y Fy(/)c(/)60 b(c)9 b(o)g(n)g(t)g(i)g(n)g(u)g(e)72 b(a)6 b(s)70 b(l)8 b(o)g(n)g(g)75 b(a)6 b(s)71 b(t)10 b(h)g(e)g(r)g(e)75 b(a)7 b(r)g(e)76 b(p)12 b(o)g(s)g(s)g(i)g(b)g(l)g(e)84 b(m)7 b(o)g(d)g(e)g(l)g(s)818 3395 y FC(w)t(h)t(i)t(l)t(e)63 b FD(\()13 b(!)42 b(f)14 b(a)g(i)h(l)34 b(\))816 3494 y Fz(f)920 3594 y Fy(/)7 b(/)57 b(c)5 b(o)g(m)g(p)g(u)g(t)g(e)70 b(t)8 b(h)g(e)78 b(d)10 b(e)g(d)g(u)g(c)g(t)g(i)g(v)g(e)84 b(c)11 b(l)g(o)g(s)g(u)g(r)g (e)77 b(o)8 b(f)920 3694 y(/)f(/)60 b(t)8 b(h)g(e)76 b(c)9 b(u)g(r)g(r)g(e)g(n)g(t)82 b(p)12 b(a)g(r)g(t)g(i)g(a)g(l)84 b(m)5 b(o)g(d)g(e)g(l)918 3793 y FD(e)g(x)g(p)g(a)g(n)g(d)64 b(\()14 b(\))g(;)924 3893 y FC(i)d(f)69 b FD(\()34 b(c)13 b(o)g(n)g(f)g(l)g(i)g(c)g(t)84 b(\()14 b(\))h(\))76 b Fy(/)7 b(/)62 b(i)10 b(s)78 b(t)8 b(h)g(e)79 b(s)12 b(i)g(t)g(u)g(a)g (t)g(i)g(o)g(n)86 b(c)11 b(o)g(n)g(s)g(i)g(s)g(t)g(e)g(n)g(t)29 b(?)1021 3993 y FD(b)8 b(a)g(c)g(k)g(t)g(r)g(a)g(c)g(k)67 b(\()24 b FC(t)t(r)t(u)t(e)d FD(\))11 b(;)921 4092 y FC(e)d(l)g(s)g(e)75 b(i)11 b(f)69 b FD(\()29 b(c)8 b(o)g(v)g(e)g(r)g(e) g(d)69 b(\()12 b(\))g(\))1017 4192 y FC(r)t(e)t(t)t(u)t(r)t(n)64 b(t)t(r)t(u)t(e)22 b FD(;)71 b Fy(/)7 b(/)54 b(a)70 b(f)15 b(u)f(l)h(l)84 b(m)5 b(o)g(d)g(e)g(l)921 4291 y FC(e)j(l)g(s)g(e)75 b(i)11 b(f)76 b FD(\()13 b(!)39 b(l)12 b(o)g(o)g(k)g(a)g(h)g(e)g(a)g(d) p 1894 4291 V 47 w(n)g(o)p 2046 4291 V 52 w(h)g(e)g(u)g(r)g(i)g(s)g(t)g (i)g(c)72 b(\()12 b(\))g(\))1017 4391 y FC(r)t(e)t(t)t(u)t(r)t(n)64 b(t)t(r)t(u)t(e)22 b FD(;)71 b Fy(/)7 b(/)54 b(a)68 b(p)12 b(a)g(r)g(t)g(i)g(a)g(l)84 b(m)5 b(o)g(d)g(e)g(l)816 4491 y Fz(g)818 4590 y FC(r)t(e)t(t)t(u)t(r)t(n)69 b(f)9 b(a)g(l)g(s)g(e)32 b FD(;)71 b Fy(/)7 b(/)54 b(n)s(o)61 b(m)7 b(o)g(d)g(e)g(l)g(s)77 b(l)15 b(e)f(f)h(t)717 4690 y Fz(g)639 4815 y FD(This)28 b(function)g(w)n(ould)f(then)h(b)r(e)g (used)g(lik)n(e:)1905 5255 y(84)p eop %%Page: 85 89 85 88 bop 718 523 a FC(w)t(h)t(i)t(l)t(e)61 b FD(\()12 b(1)g(\))51 b Fz(f)825 623 y FC(i)11 b(f)69 b FD(\()31 b(p)11 b(a)g(r)g(t)g(i)g(a)g(l)p 1344 623 25 4 v 48 w(m)g(o)g(d)g(e)g (l)74 b(\()13 b(\))g(\))56 b Fz(f)920 722 y Fy(/)7 b(/)61 b(p)9 b(r)g(o)g(c)g(e)g(s)g(s)80 b(t)8 b(h)g(e)80 b(p)12 b(a)g(r)g(t)g(i)g(a)g(l)84 b(m)5 b(o)g(d)g(e)g(l)66 b(a)t(n)t(d)j(p)12 b(o)g(s)g(s)g(i)g(b)g(l)g(y)83 b(a)7 b(s)g(k)920 822 y(/)g(/)60 b(t)8 b(h)g(e)75 b(u)8 b(s)g(e)g(r)67 b(h)r(o)r(w)c(t)8 b(h)g(e)72 b(m)5 b(o)g(d)g(e)g(l)71 b(s)9 b(h)g(o)g(u)g(l)g(d)75 b(b)6 b(e)70 b(e)9 b(x)g(t)g(e)g(n)g(d)g(e)g(d)23 b(.)920 922 y(/)7 b(/)60 b(t)8 b(h)g(e)80 b(s)13 b(e)g(l)g(e)g(c)g(t)g(i)g(o)g (n)g(s)77 b(c)t(a)t(n)66 b(b)6 b(e)71 b(e)10 b(x)g(p)g(r)g(e)g(s)g(s)g (e)g(d)77 b(u)9 b(s)g(i)g(n)g(g)920 1021 y(/)e(/)57 b(s)5 b(e)g(t)g(T)g(o)g(B)g(T)g(r)g(u)g(e)17 b(\()d(a)s(t)s(o)s(m)i(\))60 b(a)t(n)t(d)k(s)8 b(e)g(t)g(T)g(o)g(B)g(F)g(a)g(l)g(s)g(e)18 b(\()c(a)s(t)s(o)s(m)e(\))920 1121 y(/)7 b(/)65 b(c)13 b(a)g(l)g(l)g(s)39 b(.)76 b(A)12 b(l)g(t)g(e)g(r)g(n)g(a)g(t)g(i)g(v)g (e)g(l)g(y)39 b(,)68 b(y)t(o)t(u)c(c)t(a)t(n)j(u)7 b(s)g(e)70 b(t)8 b(h)g(e)75 b(s)8 b(e)g(q)g(u)g(e)g(n)g(c)g(e)920 1220 y(/)f(/)263 b(h)13 b(e)g(u)g(r)g(i)g(s)g(t)g(i)g(c)79 b(\()14 b(\))g(;)79 b(c)8 b(h)g(o)g(o)g(s)g(e)70 b(\()13 b(\))g(;)920 1320 y(/)7 b(/)59 b(t)7 b(o)72 b(u)7 b(s)g(e)69 b(s)8 b(m)g(o)g(d)g(e)g(l)g(s)22 b(')g(s)73 b(h)13 b(e)g(u)g(r)g(i)g(s) g(t)g(i)g(c)g(s)33 b(.)821 1420 y Fz(g)58 b FC(e)8 b(l)g(s)g(e)57 b Fz(f)920 1519 y Fy(/)7 b(/)62 b(p)10 b(r)g(i)g(n)g(t)74 b(s)s(o)s(m)s(e)67 b(d)12 b(i)g(a)g(g)g(n)g(o)g(s)g(t)g(i)g(c)g(s)922 1619 y FD(b)c(a)g(c)g(k)g(t)g(r)g(a)g(c)g(k)66 b(\()25 b FC(t)t(r)t(u)t(e)15 b FD(\))816 1719 y Fz(g)717 1818 y(g)1905 5255 y FD(85)p eop %%Page: 86 90 86 89 bop 515 1146 a Fw(App)5 b(endix)65 b(B)515 1561 y FE(Smo)6 b(dels)77 b(In)-6 b(ternal)76 b(F)-19 b(ormat)515 1993 y FD(The)28 b(language)f(that)i FB(smodels)c FD(2.x)j(accepts)g (is)g(m)n(uc)n(h)g(simpler)g(than)h(the)f(one)g(accepted)515 2092 y(b)n(y)36 b FB(lparse)p FD(.)57 b(During)35 b(grounding)g FB(lparse)e FD(transforms)g(the)j(complex)f(rules)f(to)h(those)515 2192 y(accepted)22 b(b)n(y)h FB(smodels)p FD(.)33 b(There)22 b(are)f(four)h(di\013eren)n(t)h(rule)f(t)n(yp)r(es:)34 b(basic)22 b(rules,)h(constrain)n(t)515 2291 y(rules,)k(c)n(hoice)g (rules,)g(and)g(w)n(eigh)n(t)g(rules.)p 432 2357 4 17 v 432 2391 V 432 2424 V 432 2457 V 432 2490 V 432 2523 V 432 2557 V 432 2590 V 639 2398 a(Additionally)-7 b(,)41 b(the)e(minimize)g(statemen)n(ts)f(are)f(in)n(ternally)g(represen)n (ted)g(b)n(y)h(their)515 2498 y(o)n(wn)24 b(rule)g(t)n(yp)r(e.)36 b(The)25 b(maximize)f(statemen)n(ts)h(are)e(c)n(hanged)h(in)n(to)g (minimize)h(statemen)n(ts)515 2598 y(b)n(y)i(negating)g(all)g(literals) g(in)h(them.)639 2697 y(Basic)e(rules)g(are)g(the)h(normal)e(rules)h (that)h(don't)g(use)f(an)n(y)g(extended)h(features.)36 b(Con-)515 2797 y(strain)n(t)27 b(rules)g(corresp)r(ond)f(to)h FB(lparse)e FD(rules)i(of)h(the)g(form)722 2913 y FB(a)43 b(:-)g(2)g Fz(f)g FB(b,)g(c,)g(not)f(d)i Fz(g)p FB(.)639 3013 y FD(c)n(hoice)27 b(rules)g(ha)n(v)n(e)f(the)i(form)722 3129 y Fz(f)43 b FB(a,)g(b,)g(c)g Fz(g)g FB(:-)g(d,)g(e,)f(not)h(f,)g (not)f(g.)639 3229 y FD(and)28 b(w)n(eigh)n(t)f(rules)g(ha)n(v)n(e)f (the)i(form)722 3345 y FB(a)43 b(:-)g(2)g([)h(b=1,)d(c=2,)h(not)h(d=3)f (].)639 3444 y FD(In)33 b(all)g(cases)f(there)h(ma)n(y)f(b)r(e)i(only)e (one)h(sp)r(ecial)f(construct)h(in)g(one)g(rule)f(and)h(there)515 3544 y(are)26 b(only)i(lo)n(w)n(er)e(b)r(ounds)h(for)g(constrain)n(t)g (and)g(w)n(eigh)n(t)g(rules.)639 3644 y(In)n(ternally)e FB(smodels)d FD(uses)j(in)n(tegers)e(as)h(atoms)h(and)f(the)h(atom)g (names)f(are)g(stored)g(in)515 3743 y(a)29 b(separate)f(sym)n(b)r(ol)h (table.)42 b(The)30 b FB(smodels)d FD(exp)r(ects)i(to)h(read)e(\014rst) h(the)h(actual)f(rules)g(of)515 3843 y(the)k(program,)f(next)g(the)h (sym)n(b)r(ol)g(table,)g(and)g(\014nally)f(the)h(compute)g(statemen)n (t.)52 b(The)515 3943 y(di\013eren)n(t)27 b(parts)g(are)g(separated)f (b)n(y)i(a)f(line)h(that)f(has)g(only)h(a)f(`0'.)639 4042 y(The)40 b(di\013eren)n(t)h(sections)e(are)g(b)r(est)h(in)n(tro)r (duced)g(b)n(y)g(an)g(example.)74 b(Consider)39 b(the)515 4142 y(follo)n(wing)26 b(program:)515 4308 y FC(Program)31 b(B.1)722 4424 y FB(a)43 b(:-)g(not)g(b.)722 4524 y(b)g(:-)g(not)g(a.) 722 4623 y(:-)g(b.)722 4723 y(compute)e Fz(f)i FB(a)g Fz(g)p FB(.)515 4889 y FD(The)27 b(in)n(ternal)g(format)g(for)g(this)h (program)e(is:)1905 5255 y(86)p eop %%Page: 87 91 87 90 bop 722 523 a FB(1)43 b(2)h(1)f(1)g(3)722 623 y(1)g(3)h(1)f(1)g (2)722 722 y(1)g(1)h(1)f(0)g(3)722 822 y(0)722 922 y(2)g(a)722 1021 y(3)g(b)722 1121 y(0)722 1220 y(B+)722 1320 y(2)722 1420 y(0)722 1519 y(B-)722 1619 y(1)722 1719 y(0)722 1818 y(1)639 1918 y FD(The)28 b(\014rst)f(part)g(of)h(the)g(listing)f (consists)g(of)h(the)g(the)g(rules)f(of)g(the)h(program:)722 2034 y FB(1)43 b(2)h(1)f(1)g(3)722 2134 y(1)g(3)h(1)f(1)g(2)722 2233 y(1)g(1)h(1)f(0)g(3)722 2333 y(0)639 2433 y FD(The)23 b(\014rst)g(n)n(um)n(b)r(er)f(denotes)h(the)g(rule)f(t)n(yp)r(e.)36 b(All)23 b(of)g(the)g(rules)f(are)g(basic)g(rules)h(so)f(the)515 2532 y(n)n(um)n(b)r(er)j(is)f(one)h(in)g(all)g(cases.)35 b(The)25 b(next)h(n)n(um)n(b)r(er)e(iden)n(ti\014es)i(the)f(head)g(of)g (the)g(atom.)36 b(In)515 2632 y(this)22 b(case,)g(the)g(atom)f FB(a)h FD(is)f(represen)n(ted)g(b)n(y)g(2)h(and)f(the)h(atom)g FB(b)f FD(b)n(y)h(3.)34 b(The)22 b(atom)f(n)n(um)n(b)r(er)515 2731 y(1)i(is)h(an)f(in)n(ternal)h(atom)f(named)p 1552 2731 27 4 v 55 w FB(false)f FD(that)i(is)g(true)f(when)h(a)g(mo)r(del)g (candidate)f(should)515 2831 y(b)r(e)28 b(rejected.)639 2931 y(Next)35 b(comes)f(the)h(b)r(o)r(dy)g(de\014nition.)59 b(The)35 b(\014rst)f(n)n(um)n(b)r(er)h(is)f(the)h(total)g(n)n(um)n(b)r (er)f(of)515 3030 y(literals)28 b(in)h(the)g(b)r(o)r(dy)g(and)f(the)i (second)e(one)g(is)h(the)g(n)n(um)n(b)r(er)f(of)h(negativ)n(e)e (literals.)40 b(The)515 3130 y(rest)25 b(of)h(the)g(line)g(con)n(tains) f(the)h(n)n(um)n(b)r(ers)g(of)g(the)g(literals,)f(with)i(negativ)n(e)e (ones)g(b)r(eing)h(in)515 3230 y(fron)n(t.)36 b(The)28 b(line)g(with)g(just)g(0)f(signals)g(the)h(end)f(of)h(the)g(rules.)639 3329 y(The)g(second)f(part)g(is)g(the)h(sym)n(b)r(ol)g(table)f(con)n (taining)g(the)h(atom)f(de\014nitions:)722 3445 y FB(2)43 b(a)722 3545 y(3)g(b)722 3645 y(0)639 3744 y FD(If)27 b(an)f(atom)g(is)h(left)g(out)f(the)h(sym)n(b)r(ol)f(table,)h(it)g(is)f (considered)f(to)i(b)r(e)f(a)h(hidden)g(atom)515 3844 y(and)g(it)h(is)g(not)f(prin)n(ted)h(in)g(the)g(mo)r(del.)37 b(In)27 b(this)h(example,)g(the)g(\014rst)f(atom)g(is)h(hidden.)639 3944 y(The)g(third)g(part)f(con)n(tains)f(the)i(compute)g(statemen)n(t) 722 4060 y FB(B+)722 4159 y(2)722 4259 y(0)722 4359 y(B-)722 4458 y(1)722 4558 y(0)722 4658 y(1)639 4757 y FD(After)f FB(B+)e FD(comes)h(the)g(p)r(ositiv)n(e)g(compute)g(statemen)n(t,)g (that)h(is,)f(a)g(list)g(of)g(atoms)g(that)515 4857 y(should)d(b)r(e)i (true)e(in)h(the)h(mo)r(del.)35 b(After)25 b FB(B-)e FD(comes)g(a)g(list)h(of)g(atoms)f(that)h(shouldn't)h(b)r(e)f(in)515 4956 y(the)h(mo)r(del.)37 b(The)25 b(last)g(1)g(signi\014es)g(the)g(n)n (um)n(b)r(er)h(of)f(mo)r(dels)g(that)h(should)f(b)r(e)h(calculated.) 1905 5255 y(87)p eop %%Page: 88 92 88 91 bop 776 581 a FD(T)-7 b(able)28 b(B.1:)36 b(The)28 b(mapping)f(of)g(atoms)g(that)h(are)f(used)g(in)h(the)g(examples)p 1618 691 659 4 v 1616 791 4 100 v 1667 761 a(atom)p 1900 791 V 100 w(n)n(um)n(b)r(er)p 2274 791 V 1618 794 659 4 v 1616 894 4 100 v 1739 864 a(a)p 1900 894 V 287 w(1)p 2274 894 V 1616 994 V 1737 964 a(b)p 1900 994 V 285 w(2)p 2274 994 V 1616 1093 V 1741 1063 a(c)p 1900 1093 V 290 w(3)p 2274 1093 V 1616 1193 V 1737 1163 a(d)p 1900 1193 V 285 w(4)p 2274 1193 V 1616 1293 V 1741 1263 a(e)p 1900 1293 V 290 w(5)p 2274 1293 V 1618 1296 659 4 v 515 1628 a FA(B.1)134 b(Rule)46 b(T)l(yp)t(es)515 1810 y FC(Basic)32 b(Rule)722 1909 y FD(A)c(basic)f(rule)h(has)f(the)h(form:)905 2059 y FB(1)43 b(head)f(#literals)e(#negative)g Fm(negative)54 b(positive)722 2192 y FD(Where)21 b FB(head)f FD(is)g(the)i(atom)e (that)i(is)e(the)i(head)e(of)h(the)h(rule,)g FB(#literals)17 b FD(is)k(the)g(total)722 2291 y(n)n(um)n(b)r(er)29 b(of)f(literals)g (in)h(the)g(rule)f(b)r(o)r(dy)-7 b(,)29 b FB(#negative)c FD(is)j(the)h(n)n(um)n(b)r(er)g(of)f(negativ)n(e)722 2391 y(literals)20 b(in)h(the)g(rule)g(b)r(o)r(dy)-7 b(,)22 b Fy(ne)l(gative)28 b FD(is)20 b(the)h(list)g(of)g(negativ)n(e)f (literals,)h(and)g Fy(p)l(ositive)722 2491 y FD(is)28 b(the)g(list)g(of)f(p)r(ositiv)n(e)g(literals.)722 2706 y FC(Example)k(B.1)905 2872 y FD(Let)d(the)g(atoms)f(b)r(e)h(de\014ned) g(as)e(in)i(T)-7 b(able)28 b(B.1.)36 b(Then,)28 b(the)g(rule:)1060 2972 y FB(a)43 b(:-)g(b,)g(not)f(c,)h(d,)g(not)f(e.)905 3088 y FD(is)27 b(represen)n(ted)g(as:)1060 3188 y FB(1)43 b(1)h(4)f(2)g(3)g(5)g(2)g(3)3324 3304 y Fi(\006)515 3470 y FC(Constrain)m(t)32 b(Rule)722 3570 y FD(A)c(constrain)n(t)f(rule)g (has)g(the)h(form:)905 3719 y FB(2)43 b(head)f(#literals)e(#negative)g (bound)h Fm(negative)55 b(positive)722 3852 y FD(where)36 b FB(head)p FD(,)i FB(#literals)p FD(,)d FB(#negative)p FD(,)h Fy(ne)l(gative)6 b FD(,)40 b(and)c Fy(p)l(ositive)45 b FD(are)36 b(as)g(with)722 3952 y(basic)24 b(rules)g(and)g FB(bound)e FD(is)i(the)h(amoun)n(t)e(of)i(literals)e(in)i(b)r(o)r(dy)f (that)h(has)e(to)i(b)r(e)f(true)722 4051 y(so)j(that)h(the)g(head)f(is) h(true.)722 4267 y FC(Example)j(B.2)905 4433 y FD(Giv)n(en)c(the)h (bindings)g(in)g(T)-7 b(able)27 b(B.1,)g(the)h(rule)1060 4533 y FB(a)43 b(:-)g(2)g Fz(f)g FB(b,)g(c,)g(not)f(d)h Fz(g)p FB(.)905 4649 y FD(is)27 b(represen)n(ted)g(as)1060 4749 y FB(2)43 b(1)h(3)f(1)g(2)g(4)g(2)g(3)3324 4865 y Fi(\006)1905 5255 y FD(88)p eop %%Page: 89 93 89 92 bop 515 523 a FC(Choice)31 b(Rule)722 623 y FD(A)d(c)n(hoice)f (rule)g(has)g(the)h(form)905 754 y FB(3)43 b(#heads)e Fm(heads)56 b FB(#literals)40 b(#negative)g Fm(negative)55 b(positive)722 881 y FD(Most)32 b(of)h(the)g(en)n(tries)e(are)h(the)h (same)f(as)f(with)i(basic)f(rules.)51 b(The)32 b(en)n(try)h FB(#heads)722 981 y FD(denotes)f(the)g(n)n(um)n(b)r(er)g(of)g(the)g (atoms)g(in)g(a)f(c)n(hoice)h(rule)f(head)h(and)g Fy(he)l(ads)40 b FD(is)32 b(the)722 1081 y(list)c(of)g(the)g(atoms)f(in)g(the)h(rule)g (head.)722 1261 y FC(Example)j(B.3)905 1415 y FD(Using)c(the)h(usual)g (bindings)f(for)g(the)h(atoms,)f(the)h(rule)1060 1515 y Fz(f)43 b FB(a,)g(b,)g(c)g Fz(g)g FB(:-)g(e,)g(not)f(d.)905 1625 y FD(is)27 b(represen)n(ted)g(as)1060 1725 y FB(3)43 b(3)h(1)f(2)g(3)g(2)g(1)g(4)h(5)3324 1835 y Fi(\006)515 1989 y FC(W)-8 b(eigh)m(t)31 b(Rule)722 2089 y FD(A)d(w)n(eigh)n(t)f (rule)g(has)g(the)h(form)905 2221 y FB(5)43 b(head)f(bound)g(#lits)f (#negative)f Fm(negative)55 b(positive)f(weights)722 2348 y FD(Most)26 b(of)h(the)f(en)n(tries)g(are)f(the)i(same)f(as)f(in) i(constrain)n(t)e(rules.)36 b(The)26 b(en)n(try)g Fy(weights)722 2447 y FD(is)i(a)f(list)h(of)f(the)h(w)n(eigh)n(ts)f(of)h(the)g (literals)e(in)i(the)g(rule)f(b)r(o)r(dy)-7 b(.)722 2617 y FC(Example)31 b(B.4)905 2771 y FD(The)d(rule:)1060 2871 y FB(a)43 b(:-)g(3)g([)g(b=1,)f(not)h(c=2)f(].)905 2981 y FD(is)27 b(represen)n(ted)g(as:)1060 3081 y FB(5)43 b(1)h(3)f(2)g(1)g(3)g(2)g(2)h(1)3324 3191 y Fi(\006)p 432 4584 4 1313 v 515 3313 a FC(Minimize)29 b(Rule)722 3413 y FD(A)f(minimize)g(rule)g(is)f(of)h(the)g(form:)905 3562 y FB(6)43 b(0)g(#lits)f(#negative)e Fm(negative)54 b(positive)h(weights)722 3695 y FD(Note)28 b(that)g(eac)n(h)f(literal)g (has)h(to)f(ha)n(v)n(e)g(an)h(explicit)g(w)n(eigh)n(t)f(assigned)f(to)i (it.)38 b(Max-)722 3795 y(imization)28 b(can)f(b)r(e)h(ac)n(hiev)n(ed)e (b)n(y)i(negating)e(all)i(literals)e(in)i(the)g(statemen)n(t)g(b)r(o)r (dy)-7 b(.)722 3994 y FC(Example)31 b(B.5)905 4160 y FD(The)d(statemen)n(t:)1060 4259 y FB(maximize)40 b([)k(a=5,)e(not)g(b) h(=)g(10)g(].)905 4376 y FD(is)27 b(represen)n(ted)g(as:)1060 4475 y FB(6)43 b(0)h(2)f(1)g(2)g(1)g(10)g(5)3324 4592 y Fi(\006)515 4791 y FD(In)36 b(case)e(y)n(ou)h(w)n(onder,)i(the)f (missing)f(rule)h(t)n(yp)r(e)g(4)f(w)n(as)g(originally)f(used)h(for)g (generate)515 4890 y(rules)25 b(that)h(w)n(ere)f(essen)n(tially)g(c)n (hoice)g(rules)g(with)h(b)r(ounds.)37 b(As)26 b(they)g(caused)f(seman)n (tical)515 4990 y(troubles,)i(they)h(w)n(ere)e(remo)n(v)n(ed)g(from)h (use.)1905 5255 y(89)p eop %%Page: 90 94 90 93 bop 515 1187 a FE(Bibliograph)-6 b(y)556 1630 y FD([1])41 b(Thomas)33 b(Eiter,)h(Georg)e(Gottlob,)j(and)e(Heikki)g (Mannila.)54 b(Disjunctiv)n(e)33 b(datalog.)685 1730 y Fy(A)n(CM)26 b(T)-6 b(r)l(ansactions)25 b(on)g(Datab)l(ase)h(Systems) p FD(,)d(22\(3\):364)d({)i(418,)g(Septem)n(b)r(er)h(1997.)556 1896 y([2])41 b(M.)22 b(Gelfond)g(and)f(V.)g(Lifsc)n(hitz.)27 b(The)21 b(stable)g(mo)r(del)h(seman)n(tics)e(for)h(logic)f(program-) 685 1995 y(ming.)25 b(In)20 b Fy(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)f(the) g(5th)g(International)h(Confer)l(enc)l(e)f(on)g(L)l(o)l(gic)h(Pr)l(o)l (gr)l(am-)685 2095 y(ming)p FD(,)k(pages)f(1070{1080,)c(Seattle,)28 b(USA,)g(August)g(1988.)e(The)i(MIT)f(Press.)556 2261 y([3])41 b(M.)33 b(Gelfond)h(and)e(V.)i(Lifsc)n(hitz.)52 b(Logic)32 b(programs)f(with)i(classical)e(negation.)52 b(In)685 2361 y Fy(Pr)l(o)l(c)l(e)l(e)l(dings)43 b(of)g(the)f(7th)g (International)g(Confer)l(enc)l(e)h(on)f(L)l(o)l(gic)g(Pr)l(o)l(gr)l (amming)p FD(,)685 2460 y(pages)27 b(579{597,)d(Jerusalem,)j(Israel,)f (June)h(1990.)f(The)i(MIT)g(Press.)556 2626 y([4])41 b(Keijo)25 b(Heljank)n(o.)32 b(Using)25 b(logic)f(programs)f(with)j (stable)f(mo)r(del)g(seman)n(tics)f(to)h(solv)n(e)685 2726 y(deadlo)r(c)n(k)i(and)g(reac)n(habilit)n(y)f(problems)h(for)g (1-safe)f(p)r(etri)h(nets.)37 b(In)28 b Fy(Pr)l(o)l(c)l(e)l(e)l(dings)i (of)685 2826 y(the)25 b(5th)h(International)f(Confer)l(enc)l(e)g(on)g (T)-6 b(o)l(ols)26 b(and)f(A)n(lgorithms)g(for)h(Construction)685 2925 y(and)31 b(A)n(nalysis)f(of)h(Systems)p FD(,)c(pages)f(240{254.)f (Springer-V)-7 b(erlag,)25 b(1999.)556 3091 y([5])41 b(T)-7 b(omi)27 b(Janh)n(unen,)g(Ilkk)-5 b(a)26 b(Niemel\177)-42 b(a,)27 b(P)n(atrik)f(Simons,)h(and)f(Jia-Huai)g(Y)-7 b(ou.)36 b(Unfold-)685 3191 y(ing)d(partialit)n(y)f(and)h(disjunctions) g(in)g(stable)g(mo)r(del)g(seman)n(tics.)52 b(In)33 b Fy(Pr)l(o)l(c)l(e)l(e)l(dings)685 3290 y(of)e(the)g(7th)f (International)g(Confer)l(enc)l(e)h(on)f(Principles)i(of)f(Know)t(le)l (dge)h(R)l(epr)l(esen-)685 3390 y(tation)e(and)h(R)l(e)l(asoning)p FD(,)c(2000.)556 3556 y([6])41 b(W.)36 b(Marek)f(and)g(M.)h(T)-7 b(ruszczy)r(\023)-44 b(nski.)59 b(Stable)36 b(mo)r(dels)f(and)g(an)h (alternativ)n(e)e(logic)685 3656 y(programming)29 b(paradigm.)43 b(In)30 b Fy(The)k(L)l(o)l(gic)f(Pr)l(o)l(gr)l(amming)g(Par)l(adigm:)45 b(a)33 b(25-ye)l(ar)685 3755 y(Persp)l(e)l(ctive)p FD(,)c(pages)e (375{398.)d(Springer-V)-7 b(erlag.)556 3921 y([7])41 b(I.)30 b(Niemel\177)-42 b(a)30 b(and)g(P)-7 b(.)30 b(Simons.)44 b(Ev)-5 b(aluating)29 b(an)g(algorithm)g(for)h(default)g(reasoning.)685 4021 y(In)i Fy(Working)i(Notes)g(of)g(the)f(IJCAI'95)i(Workshop)g(on)f (Applic)l(ations)h(and)f(Imple-)685 4121 y(mentations)25 b(of)h(Nonmonotonic)f(R)l(e)l(asoning)g(Systems,)g(Montr)l(e)l(al,)i (Canada)p FD(,)e(pages)685 4220 y(66{72,)h(Mon)n(treal,)g(Canada,)h (August)g(1995.)556 4386 y([8])41 b(I.)c(Niemel\177)-42 b(a)37 b(and)f(P)-7 b(.)36 b(Simons.)64 b(E\016cien)n(t)36 b(implemen)n(tation)h(of)f(the)h(w)n(ell-founded)685 4486 y(and)27 b(stable)g(mo)r(del)g(seman)n(tics.)35 b(In)27 b(M.)h(Maher,)e(editor,)h Fy(Pr)l(o)l(c)l(e)l(e)l(dings)j(of)g (the)f(Joint)685 4586 y(International)43 b(Confer)l(enc)l(e)g(and)g (Symp)l(osium)g(on)f(L)l(o)l(gic)i(Pr)l(o)l(gr)l(amming)p FD(,)h(pages)685 4685 y(289{303,)25 b(Bonn,)i(German)n(y)-7 b(,)27 b(Septem)n(b)r(er)g(1996.)f(The)i(MIT)g(Press.)556 4851 y([9])41 b(I.)29 b(Niemel\177)-42 b(a,)29 b(P)-7 b(.)28 b(Simons,)g(and)h(T.)f(Soininen.)40 b(Stable)28 b(mo)r(del)h(seman)n(tics)e(of)i(w)n(eigh)n(t)685 4951 y(constrain)n(t)39 b(rules.)71 b(In)40 b Fy(Pr)l(o)l(c)l(e)l(e)l(dings) h(of)h(the)e(5th)h(International)g(Confer)l(enc)l(e)h(on)1905 5255 y FD(90)p eop %%Page: 91 95 91 94 bop 685 523 a Fy(L)l(o)l(gic)26 b(Pr)l(o)l(gr)l(amming)f(and)f (Nonmonotonic)h(R)l(e)l(asoning)p FD(,)e(pages)e(317{331,)f(El)h(P)n (aso,)685 623 y(T)-7 b(exas,)27 b(USA,)i(Decem)n(b)r(er)e(1999.)f (Springer-V)-7 b(erlag.)515 789 y([10])40 b(I.)c(Niemel\177)-42 b(a,)37 b(P)-7 b(.)35 b(Simons,)i(and)e(T.)h(Syrj\177)-42 b(anen.)59 b(Smo)r(dels:)52 b(A)36 b(system)f(for)g(answ)n(er)685 888 y(set)k(programming.)66 b(In)38 b Fy(Pr)l(o)l(c)l(e)l(e)l(dings)j (of)f(the)g(8th)g(International)g(Workshop)h(on)685 988 y(Non-Monotonic)31 b(R)l(e)l(asoning)p FD(,)d(April)f(2000.)515 1154 y([11])40 b(Ilkk)-5 b(a)38 b(Niemel\177)-42 b(a)37 b(and)h(P)n(atrik)e(Simons.)66 b(Smo)r(dels)38 b({)f(an)g(implemen)n (tation)h(of)g(the)685 1254 y(stable)g(mo)r(del)f(and)g(w)n (ell-founded)h(seman)n(tics)e(for)h(normal)g(logic)f(programs.)64 b(In)685 1353 y Fy(Pr)l(o)l(c)l(e)l(e)l(dings)26 b(of)g(the)g(4th)f (International)g(Confer)l(enc)l(e)h(on)g(L)l(o)l(gic)g(Pr)l(o)l(gr)l (amming)f(and)685 1453 y(Non-Monotonic)k(R)l(e)l(asoning)p FD(,)d(pages)e(420{429,)e(Dagstuhl,)k(German)n(y)-7 b(,)25 b(July)g(1997.)685 1553 y(Springer-V)-7 b(erlag.)515 1719 y([12])40 b(Ilkk)-5 b(a)34 b(Niemel\177)-42 b(a,)36 b(P)n(atrik)c(Simons,)k(and)e(Timo)f(Soininen.)57 b(Stable)34 b(mo)r(del)g(seman-)685 1818 y(tics)41 b(of)f(w)n(eigh)n(t)g(constrain) n(t)g(rules.)74 b(In)41 b Fy(Pr)l(o)l(c)l(e)l(e)l(dings)i(of)f(the)g (Fifth)h(Inter)l(ational)685 1918 y(Confer)l(enc)l(e)23 b(on)f(L)l(o)l(gic)h(Pr)l(o)l(gr)l(amming)f(and)h(Nonmonotonic)f(R)l(e) l(asoning)p FD(.)d(Springer-)685 2017 y(V)-7 b(erlag,)27 b(Decem)n(b)r(er)g(1999.)515 2183 y([13])40 b(P)-7 b(.)26 b(Simons.)33 b(E\016cien)n(t)26 b(implemen)n(tation)f(of)h(the)g (stable)f(mo)r(del)h(seman)n(tics)f(for)g(nor-)685 2283 y(mal)c(logic)g(programs.)j(Researc)n(h)19 b(Rep)r(ort)i(35,)h (Helsinki)f(Univ)n(ersit)n(y)g(of)g(T)-7 b(ec)n(hnology)g(,)685 2383 y(Helsinki,)28 b(Finland,)g(Septem)n(b)r(er)g(1995.)515 2549 y([14])40 b(P)-7 b(.)39 b(Simons.)69 b(T)-7 b(o)n(w)n(ards)37 b(constrain)n(t)g(satisfaction)h(through)g(logic)g(programs)e(and)685 2648 y(the)i(stable)e(mo)r(del)h(seman)n(tics.)64 b(Researc)n(h)36 b(Rep)r(ort)h(47,)h(Helsinki)f(Univ)n(ersit)n(y)f(of)685 2748 y(T)-7 b(ec)n(hnology)g(,)26 b(Helsinki,)i(Finland,)g(August)g (1997.)515 2914 y([15])40 b(P)-7 b(.)38 b(Simons.)65 b(Extending)37 b(the)h(stable)f(mo)r(del)h(seman)n(tics)e(with)i(more)f (expressiv)n(e)685 3014 y(rules.)65 b(In)37 b Fy(Pr)l(o)l(c)l(e)l(e)l (dings)j(of)f(the)g(5th)g(International)f(Confer)l(enc)l(e)i(on)e(L)l (o)l(gic)i(Pr)l(o-)685 3113 y(gr)l(amming)35 b(and)g(Nonmonotonic)g(R)l (e)l(asoning)p FD(,)e(pages)f(305{316,)e(El)i(P)n(aso,)g(T)-7 b(exas,)685 3213 y(USA,)29 b(Decem)n(b)r(er)e(1999.)f(Springer-V)-7 b(erlag.)515 3379 y([16])40 b(P)-7 b(.)30 b(Simons.)43 b(Extending)30 b(and)f(implemen)n(ting)i(the)f(stable)f(mo)r(del)i (seman)n(tics.)42 b(Re-)685 3479 y(searc)n(h)e(Rep)r(ort)h(58,)i (Helsinki)e(Univ)n(ersit)n(y)f(of)h(T)-7 b(ec)n(hnology)g(,)43 b(Helsinki,)i(Finland,)685 3578 y(2000.)515 3744 y([17])40 b(Ra)n(ymond)27 b(Sm)n(ully)n(an.)36 b Fy(F)-6 b(or)l(ever)31 b(Unde)l(cide)l(d)p FD(.)38 b(Alfred)28 b(A.)g(Knopf.)f(Inc,)h(1988.) 515 3910 y([18])40 b(Leon)31 b(Sterling)h(and)f(Eh)n(ud)g(Shapiro.)48 b Fy(The)34 b(A)n(rt)f(of)h(Pr)l(olo)l(g,)i(2nd)e(e)l(d.)49 b FD(MIT)32 b(press,)685 4010 y(1994.)515 4176 y([19])40 b(T.)35 b(Syrj\177)-42 b(anen.)56 b(Implemen)n(tation)35 b(of)f(lo)r(cal)g(grounding)f(for)h(logic)f(programs)g(with)685 4276 y(stable)40 b(mo)r(del)h(seman)n(tics.)74 b(T)-7 b(ec)n(hnical)39 b(Rep)r(ort)i(B)f(18,)i(Helsinki)f(Univ)n(ersit)n(y)e (of)685 4375 y(T)-7 b(ec)n(hnology)g(,)26 b(Helsinki,)i(Finland,)g (Octob)r(er)f(1998.)515 4541 y([20])40 b(M.H.)g(v)-5 b(an)38 b(Emden)h(and)f(R.A.)h(Ko)n(w)n(alski.)68 b(The)38 b(seman)n(tics)g(of)h(predicate)f(logic)685 4641 y(as)g(a)h (programming)d(language.)69 b Fy(Journal)40 b(of)g(the)h(Asso)l (ciation)g(for)f(Computing)685 4741 y(Machinery)p FD(,)30 b(23:733{742,)24 b(1976.)1905 5255 y(91)p eop %%Page: 92 96 92 95 bop 515 999 a FE(Index)515 1414 y FB(.lparserc)p FD(,)24 b(52)515 1513 y FB(#const)p FD(,)h(44)515 1613 y FB(#domain)p FD(,)g(44)515 1713 y FB(#external)p FD(,)f(45)515 1812 y FB(#function)p FD(,)g(46)515 1912 y FB(#hide)p FD(,)h(46)515 2011 y FB(#option)p FD(,)g(46)515 2111 y FB(#show)p FD(,)g(47)515 2211 y FB(#weight)p FD(,)g(47)515 2310 y(T)-7 b(r)o(,)28 b(36)515 2493 y(algebra)681 2593 y(relational,)e(27)515 2692 y(answ)n(er)g(set,)i(33)515 2792 y(API)681 2891 y(lparse,)e(53)681 2991 y(smo)r(dels,)h(12)515 3091 y(atom,)g(5,)g(19,)g(40)681 3190 y(ground,)f(19)681 3290 y(satisfaction,)h(20)515 3473 y(basic)g(rule,)g(19,)g(43)515 3572 y(binding,)h(22)515 3672 y(b)r(o)r(dy)-7 b(,)28 b(19)515 3772 y(b)r(ound,)g(29,)f(41)515 3871 y(built-in)h(functions,)g (50)515 4054 y(cartesian)e(pro)r(duct,)i(27)515 4153 y(c)n(hoice)e(p)r(oin)n(t,)i(7)515 4253 y(c)n(hoice)e(p)r(oin)n(ts,)i (11)515 4353 y(c)n(hoice)e(rule,)i(43)515 4452 y(command)f(line)h (options,)f(16)681 4552 y(-1,)g(15,)f(16)681 4652 y(-D,)i(16)681 4751 y(-W,)g(17,)e(65)681 4851 y(-c,)h(15,)g(16,)g(39,)f(44,)h(69)681 4950 y(-d,)g(16,)g(26,)g(70,)g(73)2258 1414 y(-g,)g(68,)g(71)2258 1513 y(-g)g Fy(\014le)6 b FD(,)28 b(16)2258 1613 y(-i,)g(16,)e(50)2258 1713 y(-n,)i(16)2258 1812 y(-r,)f(34,)g(37)2258 1912 y(-r)g(2,)g(17)2258 2011 y(-t,)h(11,)f(15,)f(16,)h(64,)g(70,)g(73)2258 2111 y(-v,)g(16)2258 2211 y(-w,)h(17,)e(42,)h(47)2258 2310 y(--allo)n(w-inconsisten)n(t-answ)n(ers,)16 b(17,)2424 2410 y(34)2258 2510 y(--atom-\014le,)27 b(72)2258 2609 y(--atom-\014le)f Fy(\014le)6 b FD(,)29 b(17)2258 2709 y(--dlp,)f(17,)e(34)2258 2808 y(--drop-quotes,)g(2,)h(17,)g(38)2258 2908 y(--partial,)f(17,)h(34,)g(65)2258 3008 y(--separate-w)n(eigh)n (t-de\014nitions,)17 b(2,)2424 3107 y(17,)27 b(48)2258 3207 y(--true-negation,)f(17,)h(41)2258 3307 y(smo)r(dels,)h Fy(se)l(e)34 b FD(smo)r(dels,)27 b(options)2092 3406 y FB(compute)p FD(,)e(68)2092 3506 y(compute)j(statemen)n(t,)g(48)2092 3605 y(conditional)f(literal,)g(42)2092 3705 y(constan)n(t,)g(5,)g(38) 2092 3805 y(constan)n(t)g(declaration,)f(44)2092 3904 y(constrain)n(t)2258 4004 y(w)n(eigh)n(t,)h(29)2092 4104 y(constrain)n(t)g(literal,)g(41)2092 4286 y FB(debugging)p FD(,)d(63)2092 4386 y(declaration,)i(44)2258 4485 y(constan)n(t,)h(44) 2258 4585 y(domain,)g(44)2258 4685 y(external,)g(45,)g(68)2258 4784 y(function,)h(46)2258 4884 y(hide,)g(46)2258 4984 y(option,)g(46)1905 5255 y(92)p eop %%Page: 93 97 93 96 bop 681 523 a FD(sho)n(w,)27 b(47)681 623 y(w)n(eigh)n(t,)g(42,)g (47)515 722 y(dep)r(endency)h(graph,)e(27)515 822 y(dep)r(ends,)i(28) 515 922 y(disjunctiv)n(e)681 1021 y(program,)d(34)681 1121 y(reduct,)i(34)681 1220 y(rule,)g(34)515 1320 y(dlsmo)r(dels,)g (12)515 1420 y(domain)g(declaration,)f(44)515 1519 y(domain)h (predicate)681 1619 y(de\014nition,)h(28)515 1719 y(domain)f (construction,)g(27)515 1818 y(domain)g(predicate,)g(25,)g(27)515 1918 y(domain-restricted,)f(28)515 2017 y(domain-restricted)g(program,) f(28)515 2117 y(duration,)i(10)515 2300 y(Emacs,)f(62)515 2399 y(en)n(vironmen)n(tal)g(v)-5 b(ariable,)27 b(52)515 2499 y(example,)g(56)515 2599 y(extension,)g(20,)g(26,)f(27)515 2698 y FB(external)p FD(,)e(68,)j(70)515 2881 y(fact,)h(19)515 2980 y Fu(false)p FD(,)f(20)515 3080 y(forced)g(atoms,)g(11)515 3180 y(function,)h(39,)f(49)681 3279 y(API,)g(53)681 3379 y(argumen)n(ts,)f(39)681 3479 y(ground,)g(19)681 3578 y(n)n(umerical,)h(49)681 3678 y(protot)n(yp)r(e,)g(51)681 3778 y(sym)n(b)r(olic,)g(49)681 3877 y(user-de\014ned,)g(51)681 3977 y FB(function)764 4076 y(weight)p FD(,)e(51)515 4176 y(function)j(declaration,)e(46)515 4276 y(functions)681 4375 y(in)n(ternal,)h(50)515 4558 y FB(gcc)p FD(,)f(52)515 4658 y(goal,)g(6)515 4757 y(graph)681 4857 y(dep)r(endency)-7 b(,)28 b(27)515 4956 y(ground,)e(19)2092 523 y(ground)h(instance,)g(20) 2092 623 y(grounding,)f(22)2092 805 y(hac)n(king,)h(71)2092 905 y(head,)h(19)2092 1005 y(Herbrand)2258 1104 y(base,)f(19)2258 1204 y(instan)n(tiation,)g(20,)g(22)2258 1303 y(mo)r(del,)h(20)2258 1403 y(univ)n(erse,)f(19)2092 1503 y FB(hide)p FD(,)f(71)2092 1602 y FB(hide)42 b(declaration)p FD(,)23 b(46)2092 1702 y(Horn)2258 1802 y(rule,)28 b(19)2258 1901 y(w)n(eigh)n(t)f(rule,)g(31) 2092 2084 y(INCONSISTENT,)h(34)2092 2183 y(installation,)f(13)2092 2283 y(instance,)h(20)2092 2383 y(in)n(ternal)f(functions,)h(50)2092 2482 y(in)n(terpretation,)f(20)2258 2582 y(partial,)g(35)2092 2682 y(in)n(tersection,)g(27)2092 2781 y(in)n(v)n(o)r(cation,)f(15)2092 2964 y(k)n(eyw)n(ords,)g(55)2092 3064 y(Knaster-T)-7 b(arski)25 b(op)r(erator,)h(21,)h(31)2092 3246 y(library)-7 b(,)27 b(52)2092 3346 y(literal,)g(19,)g(40)2258 3445 y(basic,)g(40)2258 3545 y(conditional,)g(42)2258 3645 y(constrain)n(t,)g(41)2258 3744 y(extended,)h(40)2258 3844 y(negativ)n(e,)f(19)2258 3944 y(w)n(eigh)n(t,)g(41)2092 4043 y(lo)r(cal)g(grounding,)g(22)2092 4143 y(logic)g(program)2258 4242 y(extended,)h(33)2092 4342 y(lparse,)f(12)2258 4442 y(API,)h(53)2258 4541 y(installation,)f(13)2258 4641 y(in)n(v)n(o)r(cation,)g(15)2258 4741 y(options,)32 b Fy(se)l(e)38 b FD(command)31 b(line)h(op-)2424 4840 y(tions)2258 4940 y(synopsis,)27 b(15)1905 5255 y(93)p eop %%Page: 94 98 94 97 bop 515 523 a FB(lparse)p 784 523 27 4 v 29 w(constant)p 1165 523 V 28 w(t)p FD(,)27 b(53)515 623 y FB(lparse)p 784 623 V 29 w(constant)p 1165 623 V 28 w(type)p FD(,)f(53)515 722 y FB(lparse)p 784 722 V 29 w(create)p 1077 722 V 29 w(new)p 1238 722 V 30 w(symbolic)p 1620 722 V 28 w(constant)p FD(,)847 822 y(54)515 922 y FB(lparse)p 784 922 V 29 w(get)p 945 922 V 30 w(symbolic)p 1327 922 V 28 w(constant)p 1707 922 V 28 w(index)p FD(,)847 1021 y(53)515 1121 y FB(lparse)p 784 1121 V 29 w(get)p 945 1121 V 30 w(symbolic)p 1327 1121 V 28 w(constant)p 1707 1121 V 28 w(name)p FD(,)847 1220 y(53)515 1320 y FB(lparse)p 784 1320 V 29 w(is)p 901 1320 V 30 w(numeric)p FD(,)f(53)515 1420 y FB(lparse)p 784 1420 V 29 w(is)p 901 1420 V 30 w(symbolic)p FD(,)g(53)515 1519 y FB(LPARSE)p 784 1519 V 29 w(LIBRARIES)p FD(,)f(52)515 1619 y FB(LPARSE)p 784 1619 V 29 w(LIBRARY)p 1121 1619 V 28 w(PATH)p FD(,)i(52)515 1719 y FB(lparse)p 784 1719 V 29 w(symbol)p 1077 1719 V 29 w(exists)p FD(,)f(54)515 1901 y FB(maximize)p FD(,)f(48)515 2001 y(mcsmo)r(dels,)j(12)515 2100 y(meaning,)g(21)515 2200 y(minimal)h(mo)r(del,)f(20)515 2300 y FB(minimize)p FD(,)d(48)515 2399 y FB(mod)p FD(,)i(50)515 2499 y(mo)r(del,)i(20)681 2599 y(disjunctiv)n(e,)g(34)681 2698 y(minimal,)g(20)681 2798 y(partial,)f(35)681 2897 y(partial,)g(stable,)g(36)681 2997 y(regular,)f(36)681 3097 y(stable,)h(22)681 3196 y(total,)g(36)681 3296 y(total,)g(stable,) h(36)681 3396 y(w)n(eigh)n(t)f(constrain)n(t)f(program,)g(31)515 3495 y(m)n(ultiple)i(argumen)n(ts,)e(40)515 3678 y(natural)h(join,)g (27)515 3778 y(negation)681 3877 y(as)g(failure,)g(33)515 3977 y(negativ)n(e)f(literal)681 4076 y(satisfaction,)h(20)515 4176 y(negativ)n(e)f(literals,)h(19)515 4276 y(negtion)681 4375 y(classical,)f(33)515 4475 y(no)r(de)h(coloring,)f(8)515 4575 y Fv(node)31 b(coloring)p FD(,)c(56)515 4674 y FB(not)p FD(,)f(40)515 4774 y(not-atom)681 4873 y(satisfaction,)h(20)515 4973 y(not-atoms,)f(19)2092 523 y(op)r(erator)2258 623 y(Knaster-T)-7 b(arski,)25 b(21)2258 722 y(Knaster-T)-7 b(arski,)23 b(w)n(eigh)n(t)i(rule,)g(31)2092 822 y(op)r(erators,)h(50) 2258 922 y(precedence,)h(50)2092 1021 y(optimize,)h(48)2092 1121 y(option)f(declaration,)g(46)2092 1220 y(options,)g Fy(se)l(e)34 b FD(command)27 b(line)h(options)2092 1403 y(parse,)f(12)2092 1503 y(partial)g(in)n(terpretation,)g(35)2092 1602 y(partial)g(mo)r(del,)h(35)2092 1702 y(pic)n(k)n(ed)f(atoms,)g(11) 2092 1802 y(planning,)h(59)2092 1901 y(pparse,)f(12)2092 2001 y(predicate)2258 2100 y(domain,)g(de\014nition,)h(28)2258 2200 y(domain,)f(formal,)g(27)2258 2300 y(domain,)g(informally)-7 b(,)27 b(25)2258 2399 y(extension,)g(20)2092 2499 y(program)2258 2599 y(disjunctiv)n(e,)h(34)2258 2698 y(domain-restricted,)e(28)2258 2798 y(extended,)i(33)2258 2897 y(logic,)f(19)2258 2997 y(w)n(eigh)n(t)g(constrain)n(t,)g(30)2092 3097 y(puzzle,)h(56)2092 3279 y(range,)e(39)2092 3379 y(reduct)2258 3479 y(disjunctiv)n(e)i (program,)e(34)2258 3578 y(normal)h(logic)g(programs,)e(21)2258 3678 y(w)n(eigh)n(t)i(constrain)n(t,)g(30)2258 3778 y(w)n(eigh)n(t)g (constrain)n(t)g(program,)e(30)2258 3877 y(w)n(eigh)n(t)i(constrain)n (t)g(rule,)g(30)2092 3977 y(regular)f(mo)r(del,)i(36)2092 4076 y(relational)e(algebra,)g(27)2258 4176 y(cartesian)g(pro)r(duct,)i (27)2258 4276 y(in)n(tersection,)f(27)2258 4375 y(natural)g(join,)h(27) 2258 4475 y(set)g(di\013erence,)f(27)2258 4575 y(symmetric)g (di\013erence,)h(27)2258 4674 y(union,)g(27)2092 4774 y(rule,)f(5,)h(19)2258 4873 y(basic,)f(19,)g(43)2258 4973 y(b)r(o)r(dy)-7 b(,)28 b(19)1905 5255 y(94)p eop %%Page: 95 99 95 98 bop 681 523 a FD(c)n(hoice,)27 b(43)681 623 y(disjunctiv)n(e,)h (34)681 722 y(head,)f(19)681 822 y(Horn,)g(19)681 922 y(Horn)g(w)n(eigh)n(t,)g(31)681 1021 y(satisfaction,)g(20)681 1121 y(tail,)g(19)681 1220 y(t)n(yp)r(es,)g(43)681 1320 y(w)n(eigh)n(t)g(constrain)n(t,)f(29)681 1420 y(w)n(eigh)n(t)h (constrain)n(t,)f(30)515 1602 y(satisfaction)681 1702 y(atom,)h(20)681 1802 y(basic)g(rule,)g(20)681 1901 y(c)n(hoice)g (rule,)g(43)681 2001 y(constrain)n(t)f(literal,)h(41)681 2100 y(disjunctiv)n(e)h(rule,)f(34)681 2200 y(negativ)n(e)f(literal,)h (20)681 2300 y(partial,)g(35)681 2399 y(w)n(eigh)n(t)g(constrain)n(t,)f (29)681 2499 y(w)n(eigh)n(t)h(constrain)n(t)f(rule,)h(30)681 2599 y(w)n(eigh)n(t)g(literal,)g(41)515 2698 y(securit)n(y)-7 b(,)27 b(13)515 2798 y(set)g(di\013erence,)h(27)515 2897 y(sho)n(w)e(declaration,)h(47)515 2997 y(size)g(of)h(searc)n(hspace,)d (11)515 3097 y(smo)r(dels)681 3196 y(API,)i(12)681 3296 y(options,)g(17)681 3396 y(statistics,)g Fy(se)l(e)34 b FD(statistics)515 3495 y FB(smodels-compute-)o(bu)o(ff)o(er)p FD(,)21 b(63)515 3595 y FB(smodels-compute-)o(fi)o(le)o(s)p FD(,)h(63)515 3694 y FB(smodels-mode.el)p FD(,)f(62)515 3794 y FB(smodels-parse-bu)o(ff)o(er)o FD(,)h(63)515 3894 y FB(smodels-parse-fi)o(le)o(s)p FD(,)g(63)515 3993 y FB(smodels-set-file)o(-l)o(is)o(t)p FD(,)g(63)515 4093 y FB(smodels-set-pars)o(er)o FD(,)g(63)515 4193 y FB(smodels-set-pars)o (er)o(-a)o(rgu)o(me)o(nts)o FD(,)15 b(63)515 4292 y FB (smodels-set-prog)o(ra)o(m)p FD(,)22 b(63)515 4392 y FB(smodels-set-prog)o(ra)o(m-)o(arg)o(um)o(ent)o(s)p FD(,)847 4491 y(63)515 4591 y(stable)27 b(mo)r(del,)h(22)681 4691 y(disjunctiv)n(e,)g(34)681 4790 y(partial,)f(36)681 4890 y(total,)g(36)681 4990 y(w)n(eigh)n(t)g(constrain)n(t,)f(31)2092 523 y(stable)h(mo)r(del)h(seman)n(tics,)f(21)2092 623 y(statemen)n(t,)h(48)2258 722 y(compute,)g(48)2258 822 y(maximize,)g(48)2258 922 y(minimize,)g(48)2258 1021 y(optimize,)g(48)2092 1121 y(statistics,)g(10)2258 1220 y(c)n(hoice)f(p)r(oin)n(ts,)h(11)2258 1320 y(duration,)f(10)2258 1420 y(forced)g(atoms,)g(11)2258 1519 y(n)n(um)n(b)r(er)h(of)f(atoms,)g (11)2258 1619 y(n)n(um)n(b)r(er)h(of)f(rules,)g(11)2258 1719 y(pic)n(k)n(ed)g(atoms,)g(11)2258 1818 y(size)g(of)h(searc)n (hspace,)d(11)2258 1918 y(truth)j(assignmen)n(ts,)f(11)2258 2017 y(wrong)f(c)n(hoices,)h(11)2092 2117 y(subgoal,)f(6)2092 2217 y(symmetric)h(di\013erence,)h(27)2092 2399 y(tail,)g(19)2092 2499 y(term,)g(19,)f(38)2092 2599 y(total)g(mo)r(del,)h(36)2092 2698 y Fu(true)p FD(,)g(20)2092 2798 y(truth)g(assigmen)n(ts,)e(11)2092 2897 y(truth)i(v)-5 b(aluation,)27 b(20)2092 3080 y(union,)h(27)2092 3263 y(v)-5 b(aluation,)27 b(20)2092 3362 y(v)-5 b(ariable,)27 b(5,)g(39)2258 3462 y(binding,)h(22)2092 3645 y(w)n(arnings,)e(65)2092 3744 y(w)n(eigh)n(t,)h(41)2258 3844 y(constrain)n(t,)g(29)2258 3944 y(constrain)n(t)g(rule,)g(29,)g(30)2258 4043 y(declaration,)f(42) 2258 4143 y(default,)i(42,)f(47)2258 4242 y(expression,)f(41)2258 4342 y FB(weight)2341 4442 y(function)p FD(,)f(51)2258 4541 y(literal,)i(41)2258 4641 y(of)h(literal,)f(29)2092 4741 y(w)n(eigh)n(t)g(declaration,)f(47)2092 4840 y(wrong)g(c)n (hoices,)h(11)1905 5255 y(95)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF