Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5...

36
Artificial Intelligence - AA 2012/2013 Lab 1 - 1 Artificial Intelligence Lab 1 Marco Piastra

Transcript of Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5...

Page 1: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 1

Artificial Intelligence

Lab 1Marco Piastra

Page 2: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 2

Jess?

Acronym of Java Expert System Shell

� A small environment written in JavaAuthor: Ernest Friedman-Hill, Sandia National Laboratories in Livermore, Canada

Rule-based system: the main programming construct is the ruleif <cond> then <action>

It is derived from an older and much larger system: CLIPS

Adopts the syntax of the LISP programming language

A program in Jess is mostly made up of a set rulesto be applied to a set of facts

Page 3: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 3

Java: using the CLASSPATH variable

You do not know what this is?It’s normal: you never used Java at all

Impostazione della variabile CLASSPATH$ CLASSPATH=<value> $ is the system prompt (do not write it, the system does)$ export CLASSPATH

To make sure that the above worked$ echo $CLASSPATH

In our case:$ CLASSPATH=/home/opt/Jess61p8$ export CLASSPATH

Make sure you respect small and capital letters! (It’s Linux, not Windows)

Starting Jess$ java jess.MainJess>

Quitting JessJess> (exit)$

(Wow, you made it!)

Page 4: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 4

Lists

(file finitestatemachine.jess)

� The LISP syntax

It could hardly be simpler: everything is either an symbol or a list.LISP: Lots of Impossible Stupid Parenthesis

Example:(deftemplate fsm

(slot current-state)

(multislot input-stream)

(multislot output-stream)

)

Lists can be nested at will (make sure you balance parentheses)

Example:(exit)

Every Jess command is a list.

� Every legitimate Jess expression is a list

Page 5: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 5

deftemplate

(file finitestatemachine.jess)

� It defines template for structured facts (=basic data items in Jess)

Example:(deftemplate event

(slot current-state)

(slot input-symbol)

(slot output-symbol)

(slot new-state)

)

It is the template of individual facts like this:(event

(current-state even)

(input-symbol 1)

(output-symbol 1)

(new-state odd)

)

Every slot will have exactly one value

Page 6: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 6

defrule

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

The meaning: the whole Jess language could fit it in.

Page 7: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 7

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

The whole thing is a list

Page 8: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 8

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Name of the rule, just an id

Page 9: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 9

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Separator:just find thisfirst

Page 10: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 10

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

(LHS - Left Hand Side):the logical conditionsthat determine theapplicability of the rule

Page 11: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 11

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Think about the LHSas the description of a patternto be applied to facts

Page 12: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 12

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

(RHS - Right Hand Side):it describes the actionsto be performedwhen the rule is FIREd

Page 13: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 13

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Facts can be eitherasserted or retracted

Messages can beprinted

Page 14: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 14

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

This is a variable

Page 15: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 15

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

A Jess variableis always preceded by ?

Page 16: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 16

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

If the overall pattern matcheseach variable will bind to a symbol

CAUTION:

matching the pattern in the LHS

is an “all or nothing” matter…

Page 17: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 17

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

A variablecan also bind

to a fact

Page 18: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 18

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

The $ operatormakes the variablebind to a list of values

Page 19: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 19

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Different occurrencesof the same variablein the LHS:they all bind tothe same value

Page 20: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 20

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

A logical clause, part of the LHS

Page 21: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 21

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

If the pattern matches, each clause bindsto a fact, not necessarily distinct

Page 22: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 22

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Another logical clause.There are two clausesin this LHS.

Page 23: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 23

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Different occurrencesof the same variabledefine a constraint acrossclauses, since they all bindto the samevalue

Page 24: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 24

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

Another constraint

Page 25: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 25

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

This variable binds to thefact that matches the clause

Page 26: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 26

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

The binding of variablespropagates from the LHSto the RHS

Page 27: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 27

(file finitestatemachine.jess)

� It defines a rule

Example:(defrule state-transition

?current <- (fsm (current-state ?cs)

(input-stream ?is $?rest)

(output-stream $?output))

(event (current-state ?cs)

(input-symbol ?is)

(output-symbol ?os)

(new-state ?ns))

=>

(printout t "From state " ?cs " input " ?is

" to state " ?ns " output " ?os crlf)

(modify ?current (current-state ?ns)

(input-stream ?rest)

(output-stream ?os ?output))

)

defrule

More examples

Page 28: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 28

(file paritychecker-fsa.jess)

� It is used to define the initial facts, that are in memory at the beginning

The (reset) command erases the working memory and re-assertsall facts defined with deffacts

Example:(deffacts test-string

(fsm (current-state even)

(input-stream 0 1 1 1 0 0 1 1)

(output-stream))

)

deffacts

Page 29: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 29

(file paritychecker-fsa.jess)

� It is used to define the initial facts, that are in memory at the beginning

The (reset) command erases the working memory and re-assertsall facts defined with deffacts

Example:(deffacts test-string

(fsm (current-state even)

(input-stream 0 1 1 1 0 0 1 1)

(output-stream))

)

deffacts

In this particular case, justan individual fact is asserted

Page 30: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 30

(file paritychecker-fsa.jess)

� It is used to define the initial facts, that are in memory at the beginning

The (reset) command erases the working memory and re-assertsall facts defined with deffacts

Example:(deffacts test-string

(fsm (current-state even)

(input-stream 0 1 1 1 0 0 1 1)

(output-stream))

)

deffacts

In general, any number of factscan be asserted via a deffacts

In this particular case, justan individual fact is asserted

Page 31: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 31

(file paritychecker-fsa.jess)

� It is used to define the initial facts, that are in memory at the beginning

The (reset) command erases the working memory and re-assertsall facts defined with deffacts

Example:(deffacts test-string

(fsm (current-state even)

(input-stream 0 1 1 1 0 0 1 1)

(output-stream))

)

deffacts

There can be many deffacts

in the same program

In general, any number of factscan be asserted via a deffacts

In this particular case, justan individual fact is asserted

Page 32: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 32

(file paritychecker-fsa.jess)

� It is used to define the initial facts, that are in memory at the beginning

The (reset) command erases the working memory and re-assertsall facts defined with deffacts

Example:(deffacts test-string

(fsm (current-state even)

(input-stream 0 1 1 1 0 0 1 1)

(output-stream))

)

deffacts

All of them will be executedby the command (reset)

There can be many deffacts

in the same program

In general, any number of factscan be asserted via a deffacts

In this particular case, justan individual fact is asserted

Page 33: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 33

How to load a program

Start Jess first (it improves the effect)

$ java jess.MainJess>

� Loading a file(batch paritychecker-fsa.jess)

also

(batch “paritychecker-fsa.jess”)

If it worked, Jess will say:

TRUE

Page 34: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 34

How Jess works (in a first approximation)

� Once activated, Jess repeats the same execution cycle

MATCHFind all rule applications

(i.e. combinations of a rule and facts matching its LHS)

CONFLICT RESOLUTIONSelect one rule

(always, one and only one)

FIREApply the selected ruleby executing its RHS

Are there rule applications?yes

no

Page 35: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 35

How to start Jess execution

� Reset: erases memory and re-asserts the initial factsIt causes the execution of deffacts

Make sure you always do a “reset” before a new run!

(reset)

Jess answers:

TRUE

� Run: starts the main execution cycle

(run)

Jess answers:<here comes the program’s output>

TRUE

Page 36: Artificial Intelligence - vision.unipv.it · Artificial Intelligence -AA 2012/2013 Lab 1 -5 deftemplate (file finitestatemachine.jess) It defines template for structured facts (=basic

Artificial Intelligence - AA 2012/2013

Lab 1 - 36

A few debugging commands

� Execute one cycle at time (i.e. step mode)(run 1)

Also (run n) to execute n cycles

� List all facts currently in memory(facts)

The answer is not very readable, it takes some effort to decode it

� List all rule applications (one rule + facts matching its LHS)(agenda)

The answer is not very readable, it takes some effort to decode it