Chapter 8: Advanced Pattern Matching
description
Transcript of Chapter 8: Advanced Pattern Matching
![Page 1: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/1.jpg)
Chapter 8:Advanced Pattern
Matching
Expert Systems: Principles and Programming, Fourth Edition
![Page 2: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/2.jpg)
Expert Systems: Principles and Programming, Fourth Edition 2
Field Constraints
• In addition to pattern matching capabilities and variable bindings, CLIPS has more powerful pattern matching operators.
• Consider writing a rule for all people who do not have brown hair:– We could write a rule for every type of hair color that
is not brown.– This involves testing the condition in a roundabout
manner – tedious, but effective.
![Page 3: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/3.jpg)
Expert Systems: Principles and Programming, Fourth Edition 3
Field Constraints
• The technique for writing a rule for all non-brown hair colors implies that we have the ability to supply all hair colors – virtually impossible.
• An alternative is to use a field constraint to restrict the values a field may have on the LHS – the THEN part of the rule.
![Page 4: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/4.jpg)
Expert Systems: Principles and Programming, Fourth Edition 4
Connective Constraints• Connective constraints are used to connect
variables and other constraints.• Not connective – the ~ acts on the one constraint or
variable that immediately follows it.• Or constraint – the symbol | is used to allow one or
more possible values to match a field or a pattern.• And constraint – the symbol & is useful with
binding instances of variables and on conjunction with the not constraint.
![Page 5: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/5.jpg)
Expert Systems: Principles and Programming, Fourth Edition 5
Combining Field Constraints
• Field constraints can be used together with variables and other literals to provide powerful pattern matching capabilities.
• Example #1: ?eyes1&blue|green– This constraint binds the person’s eye color to the
variable, ?eyes1 if the eye color of the fact being matched is either blue or green.
• Example #2: ?hair1&~black– This constraint binds the variable ?hair1 if the hair
color of the fact being matched is not black.
![Page 6: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/6.jpg)
Expert Systems: Principles and Programming, Fourth Edition 6
Functions and Expressions• CLIPS has the capability to perform calculations.
• The math functions in CLIPS are primarily used for modifying numbers that are used to make inferences by the application program.
![Page 7: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/7.jpg)
Expert Systems: Principles and Programming, Fourth Edition 7
Numeric Expressions in CLIPS
• Numeric expressions are written in CLIPS in LISP-style – using prefix form – the operator symbol goes before the operands to which it pertains.
• Example #1:5 + 8 (infix form) + 5 8 (prefix form)
• Example #2:(infix) (y2 – y1) / (x2 – x1) > 0(prefix) (> ( / ( - y2 y1 ) (- x2 x1 ) ) 0)
![Page 8: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/8.jpg)
Expert Systems: Principles and Programming, Fourth Edition 8
Return Values
• Most functions (addition) have a return value that can be an integer, float, symbol, string, or multivalued value.
• Some functions (facts, agenda commands) have no return values – just side effects.
• Division results are usually rounded off.• Return values for +, -, and * will be integer if all
arguments are integer, but if at least one value is floating point, the value returned will be float.
![Page 9: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/9.jpg)
Expert Systems: Principles and Programming, Fourth Edition 9
Variable Numbers of Arguments
• Many CLIPS functions accept variable numbers of arguments.
• Example:CLIPS> (- 3 5 7) returns 3 - 5 =-2 - 7 = -9
• There is no built-in arithmetic precedence in CLIPS – everything is evaluated from left to right.
• To compensate for this, precedence must be explicitly written.
![Page 10: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/10.jpg)
Expert Systems: Principles and Programming, Fourth Edition 10
Embedding Expressions• Expressions may be freely embedded within other
expressions:
![Page 11: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/11.jpg)
Expert Systems: Principles and Programming, Fourth Edition 11
Summing Values Using Rules
• Suppose you wanted to sum the areas of a group of rectangles.– The heights and widths of the rectangles can be
specified using the deftemplate:
(deftemplate rectangle (slot height) (slot width))
• The sum of the rectangle areas could be specified using an ordered fact such as:
(sum 20)
![Page 12: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/12.jpg)
Expert Systems: Principles and Programming, Fourth Edition 12
Summing Values
• A deffacts containing sample information is:
(deffacts initial-information(rectangle (height 10) (width 6))(rectangle (height 7) (width 5)(rectangle (height 6) (width 8))(rectangle (height 2) (width 5))(sum 0))
![Page 13: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/13.jpg)
Expert Systems: Principles and Programming, Fourth Edition 13
Summing Values
![Page 14: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/14.jpg)
Expert Systems: Principles and Programming, Fourth Edition 14
The Bind Function
• Sometimes it is advantageous to store a value in a temporary variable to avoid recalculation.
• The bind function can be used to bind the value of a variable to the value of an expression using the following syntax:
(bind <variable> <value>)
![Page 15: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/15.jpg)
Expert Systems: Principles and Programming, Fourth Edition 15
I/O Functions• When a CLIPS program requires input from the user of
a program, a read function can be used to provide input from the keyboard:
![Page 16: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/16.jpg)
Expert Systems: Principles and Programming, Fourth Edition 16
Read Function from Keyboard
• The read function can only input a single field at a time.
• Characters entered after the first field up to the are discarded.
• To input, say a first and last name, they must be delimited with quotes, “xxx xxx”.
• Data must be followed by a carriage return to be read.
![Page 17: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/17.jpg)
Expert Systems: Principles and Programming, Fourth Edition 17
I/O from/to Files
• Input can also come from external files.• Output can be directed to external files.• Before a file can be accessed, it must be opened
using the open function:
Example:(open “mydata.dat” data “r”)
• mydata.dat – is the name of the file (path can also be provided)
![Page 18: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/18.jpg)
Expert Systems: Principles and Programming, Fourth Edition 18
I/O from/to Files
• data – is the logical name that CLIPS associates with the file
• “r” – represents the mode – how the file will be used – here read access
• The open function acts as a predicate function
– Returns true if the file was successfully opened– Returns false otherwise
![Page 19: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/19.jpg)
Expert Systems: Principles and Programming, Fourth Edition 19
Table 8.2 File Access Modes
![Page 20: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/20.jpg)
Expert Systems: Principles and Programming, Fourth Edition 20
Close Function
• Once access to the file is no longer needed, it should be closed.
• Failure to close a file may result in loss of information.
• General format of the close function:(close [<file-ID>])
(close data) example
![Page 21: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/21.jpg)
Expert Systems: Principles and Programming, Fourth Edition 21
Reading / Writing to a File• Which logical name used, depends on where information
will be written – logical name t refers to the terminal (standard output device).
![Page 22: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/22.jpg)
Expert Systems: Principles and Programming, Fourth Edition 22
Formatting
• Output sent to a terminal or file may need to be formatted – enhanced in appearance.
• To do this, we use the format function which provides a variety of formatting styles.
• General format:(format <logical-name> <control-string> <parameters>*)
![Page 23: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/23.jpg)
Expert Systems: Principles and Programming, Fourth Edition 23
Formatting
• Logical name – t – standard output device; or logical name associated with a file.
• Control string:– Must be delimited with quotes– Consists of format flags to indicate how parameters
should be printed– 1 – 1 correspondence between flags and number of
parameters – constant values or expressions– Return value of the format function is the formatted
string – nil can be used to suppress printing.
![Page 24: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/24.jpg)
Expert Systems: Principles and Programming, Fourth Edition 24
Formatting
• Example:(format nil “Name: %-15s Age: %3d” “Bob Green”
35) Produces the results:
“Name: Bob green Age: 35”
![Page 25: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/25.jpg)
Expert Systems: Principles and Programming, Fourth Edition 25
Specifications of Format Flag
%-m.Nx
• The “-” means to left justify (right is the default)
• M – total field width – no truncation occurs
• N – number of digits of precision – default = 6
• x – display format specification
![Page 26: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/26.jpg)
Expert Systems: Principles and Programming, Fourth Edition 26
Table 8.3 Display Format Specifications
![Page 27: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/27.jpg)
Expert Systems: Principles and Programming, Fourth Edition 27
Readline Function
• To read an entire line of input, the readline function can be used:(readline [<logical-name>])
• Example:
(defrule get-name=>(printout t “What is your name? “(bind ?response (readline))(assert (user’s-name ?response)))
![Page 28: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/28.jpg)
Expert Systems: Principles and Programming, Fourth Edition 28
Predicate Functions
• A predicate function is defined to be any function that returns:– TRUE– FALSE
• Any value other than FALSE is considered TRUE.
• We say the predicate function returns a Boolean value.
![Page 29: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/29.jpg)
Expert Systems: Principles and Programming, Fourth Edition 29
The Test Conditional Element
• Processing of information often requires a loop.• Sometimes a loop needs to terminate
automatically as the result of an arbitrary expression.
• The test condition provides a powerful way to evaluate expressions on the LHS of a rule.
• Rather than pattern matching against a fact in a fact list, the test CE evaluates an expression – outermost function must be a predicate function.
![Page 30: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/30.jpg)
Expert Systems: Principles and Programming, Fourth Edition 30
Test Condition
• A rule will be triggered only if all its test CEs are satisfied along with other patterns.
(test <predicate-function>)
Example:
(test (> ?value 1))
![Page 31: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/31.jpg)
Expert Systems: Principles and Programming, Fourth Edition 31
Predicate Field Constraint
• The predicate field constraint : allows for performing predicate tests directly within patterns.
• The predicate field constraint is more efficient than using the test CE.
• It can be used just like a literal field constraint – by itself or part of a complex field.
• The predicate field constraint is always followed by a function for evaluation (predicate function).
![Page 32: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/32.jpg)
Expert Systems: Principles and Programming, Fourth Edition 32
Return Value Constraint
• The return value constraint = allows the return value of a function to be used for comparison inside a pattern.
• The return value constraint must be followed by a function (not necessarily a predicate function).
• The function must have a single-field return value.
![Page 33: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/33.jpg)
Expert Systems: Principles and Programming, Fourth Edition 33
The OR Conditional Element• Consider the two rules:
![Page 34: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/34.jpg)
Expert Systems: Principles and Programming, Fourth Edition 34
OR Conditional ElementThese two rules can be combined into one rule – or CE
requires only one CE be satisfied:
![Page 35: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/35.jpg)
Expert Systems: Principles and Programming, Fourth Edition 35
The And Conditional ElementThe and CE is opposite in concept to the or CE –
requiring all the CEs be satisfied:
![Page 36: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/36.jpg)
Expert Systems: Principles and Programming, Fourth Edition 36
Not Conditional ElementWhen it is advantageous to activate a rule based on the
absence of a particular fact in the list, CLIPS allows the specification of the absence of the fact in the LHS of a rule using the not conditional element:
![Page 37: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/37.jpg)
Expert Systems: Principles and Programming, Fourth Edition 37
Not ConditionalWe can implement this as follows:
![Page 38: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/38.jpg)
Expert Systems: Principles and Programming, Fourth Edition 38
The Exists Conditional Element
• The exists CE allows one to pattern match based on the existence of at least one fact that matches a pattern without regard to the total number of facts that actually match the pattern.
• This allows a single partial match or activation for a rule to be generated based on the existence of one fact out of a class of facts.
![Page 39: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/39.jpg)
Expert Systems: Principles and Programming, Fourth Edition 39
Exists Conditional
![Page 40: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/40.jpg)
Expert Systems: Principles and Programming, Fourth Edition 40
Exists• When more than one emergency fact is asserted, the
message to the operators is printed more than once. The following modification prevents this:
![Page 41: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/41.jpg)
Expert Systems: Principles and Programming, Fourth Edition 41
Exists• This assumes there was already an alert – triggered by
an operator-emergency rule. What if the operators were merely placed on alert to a drill:
![Page 42: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/42.jpg)
Expert Systems: Principles and Programming, Fourth Edition 42
Exists
• Now consider how the rule has been modified using the exists CE:
(defrule operator-alert-for-emergency(exists (emergency))(not (operator-alert))
=>(printout t “Emergency: Operator Alert”
crlf)(assert (operator-alert))))
![Page 43: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/43.jpg)
Expert Systems: Principles and Programming, Fourth Edition 43
Forall / LogicalConditional Elements
• The forall CE allows one to pattern match based on a set of CEs that are satisfied for every occurrence of another CE.
• The logical CE allows one to specify that the existence of a fact depends on the existence of another fact or group of facts.
![Page 44: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/44.jpg)
Expert Systems: Principles and Programming, Fourth Edition 44
Summary
• We have introduced the concept of field constraints – not, and, and or.
• Functions are entered into CLIPS top-level command loop or are used on the LHS or RHS of a rule.
– Many functions have variable number of arguments– Function calls can be nested w/in other function calls
![Page 45: Chapter 8: Advanced Pattern Matching](https://reader036.fdocuments.us/reader036/viewer/2022081505/56815bbe550346895dc9bd3d/html5/thumbnails/45.jpg)
Expert Systems: Principles and Programming, Fourth Edition 45
Summary
• CLIPS provides several I/O functions.– Open / close– Printout / read / readline– Format
• Various concepts for controlling the flow of execution are available
• Also included in the discussion were the following CEs:– Test, And, Or, Exists, Forall, and logical