
APT.all-test.Algebra.algebra._chunking-issues.soar Maven / Gradle / Ivy
#
# This file contains a list of changes I've made to the algebra system to make chunking work.
#
# 1. Negation not included in chunk
# Problem: A negated condition that tests a structure in the subgoal that then is linked
# to a superstate structure, then the negation is not included in the chunk.
# Example: -( ^top-state.point )
# Reason: Soar can't tell that a superstate structure is being tested that should be included.
# Solution: Make sure that everything that is negated is in the superstate:
# Example: ( ^top-state )
# -( ^point )
#
# 2. Double print-out from a subgoal
# Problem: In a subgoal, something is printed out to the user (or any output command).
# Reason: The check that the printing had already completed was on the subgoal state.
# Solution: Move the test to the top-state
#
# 3. Double learning
# Problem: Learns a specific rule with a constant (nil) and then learns a more general
# one with a variable. One with variable will fire in duplicate when constant
# is encountered - in this case nil for the end of a linked list.
#
#
#sp {convert-input-to-clause-form*apply*process-value*post-operation
# (state ^operator.name process-value
# ^top-state.problem
)
# (
^parse-clause
# ^current-input-value )
# ( ^parse-status post-operation)
# ( ^value { <> x <> |x| }
# ^next )
#-->
# ( ^current-input-value -
# )
# ( ^right-side )
# ( ^type number
# ^value (int ))
#}
#sp {chunk-174*d254*opnochange*1
# :chunk
# (state ^top-state ^operator ^problem ^io
# -^processed )
# ( ^name accept-input)
# ( ^current-input-value ^parse-clause )
# ( -^value { << |+| * |-| |/| |[| |]| |=| >> } ^value |3|
# ^next )
# ( ^parse-status post-operation)
# ( ^input-link )
# ( ^text )
# -->
# ( ^current-input-value - ^current-input-value +)
# ( ^right-side +)
# ( ^type number + ^value 3 +)
#}
#p chunk-167*d194*opnochange*1
#sp {chunk-167*d194*opnochange*1
# :chunk
# (state ^top-state ^operator ^problem ^io
# -^processed )
# ( ^name accept-input)
# ( ^current-input-value ^parse-clause )
# ( -^value { << |+| * |-| |/| |[| |]| |=| >> } ^value |3|
# ^next.value nil)
# ( ^parse-status post-operation)
# ( ^input-link )
# ( ^text )
# -->
# ( ^current-input-value - ^current-input-value nil +)
# ( ^right-side +)
# ( ^type number + ^value 3 +)
#}