Information Technology Reference
In-Depth Information
Purpose
Insight
Reason
Perceptions Concepts
Heuristics
Criteria
Pro
bl
em
Solution
Abstract
Abduce
Deduce
Validate
Action
Fig. 3.4
Validation requirements trigger action
For this we create a function '
gen_function
' that randomly chooses a potential
logic operator from a list of operators, and '
gen_feature_pair
' generates a pair of
suitable parameters that may also include the logical operator '
no
t'. For example,
we can generate the pair of requirements thus:
QUERY
>
gen_function
Implies
QUERY
>
gen_feature_pair
[ (isa "int") (isnot iseven) ]
QUERY
>
gen_function
Xor
QUERY
>
gen_feature_pair
[ (isnot (isa "char")) (isnot
iseven) ]
QUERY
>
gen_function
QUERY
>
gen_feature_pair
[ isvowel (isnot (isa "int")) ]
We then combine these functions in '
abduce
' shown in Fig.
3.5
. Examples of this
function are
2
:
QUERY
>
abduce
[is_not vowel
and
is_not even]
QUERY
>
abduce
[is_not a vowel
or
is_even but_not_both]
QUERY
>
abduce
[is not even
implies
a vowel]
A more efficient abduction mechanism might have been written that ensures that the
generated hypothesis has a good chance of success. For example, we might choose
a method of generation that simulates the process of evolution. This might combine
successful hypotheses to produce potentially better hypotheses.
The problem with the function '
abduce
', as defined in this program, is that it
has no memory and will reproduce a hypothesis that has already been rejected or
generate another hypothesis that has little to do with previous ones; in this function the
hypotheses do not evolve from those that have gone before. To provide a mechanism
2
The actual command is
>
abduce and the response is [ && (isnot isvowel) (isnot iseven) ] etc.