JESS: Odd accumulate behavior with identical 'result' variable names

View: New views
4 Messages — Rating Filter:   Alert me  

JESS: Odd accumulate behavior with identical 'result' variable names

by DCWYRICK :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


I noticed some odd behavior with the accumulate function.  I've got two
very similar rules

1) validates a string based on a fact and asserts an error fact if the
string is incorrect
2) validates a string based on a fact and asserts a different fact which is
used to correct the string later

I used the accumulate function to accomplish this, because one of any
possible values for this 'string' are considered to be acceptable.  Since
the two rules had minute differences, I copied the rule text, changed the
name, and changed the minor details.  I left the accumulate variable the
same in both rules, and it was named ?result.

rule 1 accumulate:
  ?someList <- (accumulate (bind ?result (create$))                     ;;
initializer
               (bind ?result (create$ ?result (...str from ?fact...)))  ;;
action
               ?result                                                  ;;
result
               (SOME-FACT-NAME ?fact
                 &:(...condition1...)
                 &:(...condition2...)
               )

rule 2 accumulate:
  ?someList <- (accumulate (bind ?result (create$))                     ;;
initializer
               (bind ?result (create$ ?result (...str from ?fact...)))  ;;
action
               ?result                                                  ;;
result
               (SOME-FACT-NAME ?fact
                 &:(...condition1...)
                 &:(...condition2...)
                 &:(...condition3...)
               )

The first rule worked fine, and generated its error fact.  However, I
noticed that the 2nd accumulate function seemed to be matching on facts
that it should not have, and firing.  The condition 1 and condition 2 were
filtering just fine, but the 3rd condition was not filtering out what it
should have been.  It was funny, because I even placed the same condition 3
check on the RHS of the rule and they would print out FALSE, meaning that
the accumulate should have not even matched the fact that made it through.

After scratching my head for a while and trying a bunch of random stuff, I
found that the problem resolved itself when I changed these variable names
to be distinct.  IE, instead of two nearly identical rules with nearly
identical accumulate functions in which the result variables were named the
same - ?result, I changed the names to the equivalent of ?result_a and
?result_b and this problem went away.  It's like the second accumulate
function was already finding the result variable that was generated by the
first accumulate, and automatically plopping the contents into the second
?someList.

I'm thinking this is a Jess bug, but I am not positive about that (I am
pretty new to Jess).  I am using Jess 7.0 as well (not sure what build), so
I suppose it also could have been corrected since then.  Hopefully this
example is enough to illustrate what's happening, as I have already rambled
on for a while now.  If more detail is required, I will have to replicate
the problem differently since the actual code is my company's property.

.                                                                                                                                                    This message and any attachments contain information from Union Pacific which may be confidential and/or privileged.
If you are not the intended recipient, be aware that any disclosure, copying, distribution or use of the contents of this message is strictly prohibited by law. If you receive this message in error, please contact the sender immediately and delete the message and any attachments.



--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users you@...'
in the BODY of a message to majordomo@..., NOT to the list
(use your own address!) List problems? Notify owner-jess-users@....
--------------------------------------------------------------------


Re: JESS: Odd accumulate behavior with identical 'result' variable names

by Ernest Friedman-Hill :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

My simple attempts at duplicating this in Jess 7.0p2 or 7.1b2 failed.  
Can you check what version you're using? If it's older, can you try  
with a current build?



On Apr 1, 2008, at 6:15 PM, DCWYRICK@... wrote:

>
> I noticed some odd behavior with the accumulate function.  I've got  
> two
> very similar rules
>
> 1) validates a string based on a fact and asserts an error fact if the
> string is incorrect
> 2) validates a string based on a fact and asserts a different fact  
> which is
> used to correct the string later
>
> I used the accumulate function to accomplish this, because one of any
> possible values for this 'string' are considered to be acceptable.  
> Since
> the two rules had minute differences, I copied the rule text,  
> changed the
> name, and changed the minor details.  I left the accumulate  
> variable the
> same in both rules, and it was named ?result.
>
> rule 1 accumulate:
>   ?someList <- (accumulate (bind ?result (create
> $))                     ;;
> initializer
>                (bind ?result (create$ ?result (...str from ?
> fact...)))  ;;
> action
>                ?
> result                                                  ;;
> result
>                (SOME-FACT-NAME ?fact
>                  &:(...condition1...)
>                  &:(...condition2...)
>                )
>
> rule 2 accumulate:
>   ?someList <- (accumulate (bind ?result (create
> $))                     ;;
> initializer
>                (bind ?result (create$ ?result (...str from ?
> fact...)))  ;;
> action
>                ?
> result                                                  ;;
> result
>                (SOME-FACT-NAME ?fact
>                  &:(...condition1...)
>                  &:(...condition2...)
>                  &:(...condition3...)
>                )
>
> The first rule worked fine, and generated its error fact.  However, I
> noticed that the 2nd accumulate function seemed to be matching on  
> facts
> that it should not have, and firing.  The condition 1 and condition  
> 2 were
> filtering just fine, but the 3rd condition was not filtering out  
> what it
> should have been.  It was funny, because I even placed the same  
> condition 3
> check on the RHS of the rule and they would print out FALSE,  
> meaning that
> the accumulate should have not even matched the fact that made it  
> through.
>
> After scratching my head for a while and trying a bunch of random  
> stuff, I
> found that the problem resolved itself when I changed these  
> variable names
> to be distinct.  IE, instead of two nearly identical rules with nearly
> identical accumulate functions in which the result variables were  
> named the
> same - ?result, I changed the names to the equivalent of ?result_a and
> ?result_b and this problem went away.  It's like the second accumulate
> function was already finding the result variable that was generated  
> by the
> first accumulate, and automatically plopping the contents into the  
> second
> ?someList.
>
> I'm thinking this is a Jess bug, but I am not positive about that  
> (I am
> pretty new to Jess).  I am using Jess 7.0 as well (not sure what  
> build), so
> I suppose it also could have been corrected since then.  Hopefully  
> this
> example is enough to illustrate what's happening, as I have already  
> rambled
> on for a while now.  If more detail is required, I will have to  
> replicate
> the problem differently since the actual code is my company's  
> property.
>
> .                                                                      
>                                                                        
>          This message and any attachments contain information from  
> Union Pacific which may be confidential and/or privileged.
> If you are not the intended recipient, be aware that any  
> disclosure, copying, distribution or use of the contents of this  
> message is strictly prohibited by law. If you receive this message  
> in error, please contact the sender immediately and delete the  
> message and any attachments.
>
>
>
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users  
> you@...'
> in the BODY of a message to majordomo@..., NOT to the list
> (use your own address!) List problems? Notify owner-jess-
> users@....
> --------------------------------------------------------------------

---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences          Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
PO Box 969, MS 9012                 ejfried@...
Livermore, CA 94550                 http://www.jessrules.com




--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users you@...'
in the BODY of a message to majordomo@..., NOT to the list
(use your own address!) List problems? Notify owner-jess-users@....
--------------------------------------------------------------------


Re: JESS: Odd accumulate behavior with identical 'result' variable names

by DCWYRICK :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I have been unsuccessful in exactly replicating my issue.  I do believe
that I still got accumulate to behave unexpectedly, however.  I will note
that I tested it in the version my company is running (some old 7.0
version), the 7.0p2 version, and the new 7.1b3 version.  This issue occurs
in 7.0, 7.0p2, but appears to be corrected in 7.1b3.

This time, instead of matching facts that it shouldn't have, the second
rule appeared to do the opposite this time and wasn't matching facts that
it should have.  If I turn the first rule off, the second will work fine.
But, if I have both running, the behavior presents itself.

I can send a zip file of my eclipse project j-unit test that highlights the
issue.




                                                                           
             "Ernest                                                      
             Friedman-Hill"                                                
             <ejfried@...                                          To
             ov>                       "jess-users"                        
             Sent by:                  <jess-users@...>            
             owner-jess-users@                                          cc
             sandia.gov                                                    
                                                                   Subject
                                       Re: JESS: Odd accumulate behavior  
             04/01/2008 08:42          with identical 'result' variable    
             PM                        names                              
                                                                           
                                                                           
             Please respond to                                            
             jess-users@sandia                                            
                   .gov                                                    
                                                                           
                                                                           




My simple attempts at duplicating this in Jess 7.0p2 or 7.1b2 failed.
Can you check what version you're using? If it's older, can you try
with a current build?



On Apr 1, 2008, at 6:15 PM, DCWYRICK@... wrote:

>
> I noticed some odd behavior with the accumulate function.  I've got
> two
> very similar rules
>
> 1) validates a string based on a fact and asserts an error fact if the
> string is incorrect
> 2) validates a string based on a fact and asserts a different fact
> which is
> used to correct the string later
>
> I used the accumulate function to accomplish this, because one of any
> possible values for this 'string' are considered to be acceptable.
> Since
> the two rules had minute differences, I copied the rule text,
> changed the
> name, and changed the minor details.  I left the accumulate
> variable the
> same in both rules, and it was named ?result.
>
> rule 1 accumulate:
>   ?someList <- (accumulate (bind ?result (create
> $))                     ;;
> initializer
>                (bind ?result (create$ ?result (...str from ?
> fact...)))  ;;
> action
>                ?
> result                                                  ;;
> result
>                (SOME-FACT-NAME ?fact
>                  &:(...condition1...)
>                  &:(...condition2...)
>                )
>
> rule 2 accumulate:
>   ?someList <- (accumulate (bind ?result (create
> $))                     ;;
> initializer
>                (bind ?result (create$ ?result (...str from ?
> fact...)))  ;;
> action
>                ?
> result                                                  ;;
> result
>                (SOME-FACT-NAME ?fact
>                  &:(...condition1...)
>                  &:(...condition2...)
>                  &:(...condition3...)
>                )
>
> The first rule worked fine, and generated its error fact.  However, I
> noticed that the 2nd accumulate function seemed to be matching on
> facts
> that it should not have, and firing.  The condition 1 and condition
> 2 were
> filtering just fine, but the 3rd condition was not filtering out
> what it
> should have been.  It was funny, because I even placed the same
> condition 3
> check on the RHS of the rule and they would print out FALSE,
> meaning that
> the accumulate should have not even matched the fact that made it
> through.
>
> After scratching my head for a while and trying a bunch of random
> stuff, I
> found that the problem resolved itself when I changed these
> variable names
> to be distinct.  IE, instead of two nearly identical rules with nearly
> identical accumulate functions in which the result variables were
> named the
> same - ?result, I changed the names to the equivalent of ?result_a and
> ?result_b and this problem went away.  It's like the second accumulate
> function was already finding the result variable that was generated
> by the
> first accumulate, and automatically plopping the contents into the
> second
> ?someList.
>
> I'm thinking this is a Jess bug, but I am not positive about that
> (I am
> pretty new to Jess).  I am using Jess 7.0 as well (not sure what
> build), so
> I suppose it also could have been corrected since then.  Hopefully
> this
> example is enough to illustrate what's happening, as I have already
> rambled
> on for a while now.  If more detail is required, I will have to
> replicate
> the problem differently since the actual code is my company's
> property.
>
> .
>
>          This message and any attachments contain information from
> Union Pacific which may be confidential and/or privileged.
> If you are not the intended recipient, be aware that any
> disclosure, copying, distribution or use of the contents of this
> message is strictly prohibited by law. If you receive this message
> in error, please contact the sender immediately and delete the
> message and any attachments.
>
>
>
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users
> you@...'
> in the BODY of a message to majordomo@..., NOT to the list
> (use your own address!) List problems? Notify owner-jess-
> users@....
> --------------------------------------------------------------------

---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences          Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
PO Box 969, MS 9012                 ejfried@...
Livermore, CA 94550                 http://www.jessrules.com




--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users you@...'
in the BODY of a message to majordomo@..., NOT to the list
(use your own address!) List problems? Notify owner-jess-users@....
--------------------------------------------------------------------




.                                                                                                                                                    This message and any attachments contain information from Union Pacific which may be confidential and/or privileged.
If you are not the intended recipient, be aware that any disclosure, copying, distribution or use of the contents of this message is strictly prohibited by law. If you receive this message in error, please contact the sender immediately and delete the message and any attachments.



--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users you@...'
in the BODY of a message to majordomo@..., NOT to the list
(use your own address!) List problems? Notify owner-jess-users@....
--------------------------------------------------------------------


Re: JESS: Odd accumulate behavior with identical 'result' variable names

by Ernest Friedman-Hill :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On Apr 7, 2008, at 4:11 PM, DCWYRICK@... wrote:

> I have been unsuccessful in exactly replicating my issue.  I do  
> believe
> that I still got accumulate to behave unexpectedly, however.  I  
> will note
> that I tested it in the version my company is running (some old 7.0
> version), the 7.0p2 version, and the new 7.1b3 version.  This issue  
> occurs
> in 7.0, 7.0p2, but appears to be corrected in 7.1b3.
>
> This time, instead of matching facts that it shouldn't have, the  
> second
> rule appeared to do the opposite this time and wasn't matching  
> facts that
> it should have.  If I turn the first rule off, the second will work  
> fine.
> But, if I have both running, the behavior presents itself.
>
> I can send a zip file of my eclipse project j-unit test that  
> highlights the
> issue.


That sounds good. Send it directly to me, not to the list.





>
>
>
>
>
>              "Ernest
>              Friedman-Hill"
>              
> <ejfried@...                                          To
>              ov>                       "jess-users"
>              Sent by:                  <jess-users@...>
>              owner-jess-
> users@                                          cc
>              sandia.gov
>                                                                    
> Subject
>                                        Re: JESS: Odd accumulate  
> behavior
>              04/01/2008 08:42          with identical 'result'  
> variable
>              PM                        names
>
>
>              Please respond to
>              jess-users@sandia
>                    .gov
>
>
>
>
>
>
> My simple attempts at duplicating this in Jess 7.0p2 or 7.1b2 failed.
> Can you check what version you're using? If it's older, can you try
> with a current build?
>
>
>
> On Apr 1, 2008, at 6:15 PM, DCWYRICK@... wrote:
>
>>
>> I noticed some odd behavior with the accumulate function.  I've got
>> two
>> very similar rules
>>
>> 1) validates a string based on a fact and asserts an error fact if  
>> the
>> string is incorrect
>> 2) validates a string based on a fact and asserts a different fact
>> which is
>> used to correct the string later
>>
>> I used the accumulate function to accomplish this, because one of any
>> possible values for this 'string' are considered to be acceptable.
>> Since
>> the two rules had minute differences, I copied the rule text,
>> changed the
>> name, and changed the minor details.  I left the accumulate
>> variable the
>> same in both rules, and it was named ?result.
>>
>> rule 1 accumulate:
>>   ?someList <- (accumulate (bind ?result (create
>> $))                     ;;
>> initializer
>>                (bind ?result (create$ ?result (...str from ?
>> fact...)))  ;;
>> action
>>                ?
>> result                                                  ;;
>> result
>>                (SOME-FACT-NAME ?fact
>>                  &:(...condition1...)
>>                  &:(...condition2...)
>>                )
>>
>> rule 2 accumulate:
>>   ?someList <- (accumulate (bind ?result (create
>> $))                     ;;
>> initializer
>>                (bind ?result (create$ ?result (...str from ?
>> fact...)))  ;;
>> action
>>                ?
>> result                                                  ;;
>> result
>>                (SOME-FACT-NAME ?fact
>>                  &:(...condition1...)
>>                  &:(...condition2...)
>>                  &:(...condition3...)
>>                )
>>
>> The first rule worked fine, and generated its error fact.  However, I
>> noticed that the 2nd accumulate function seemed to be matching on
>> facts
>> that it should not have, and firing.  The condition 1 and condition
>> 2 were
>> filtering just fine, but the 3rd condition was not filtering out
>> what it
>> should have been.  It was funny, because I even placed the same
>> condition 3
>> check on the RHS of the rule and they would print out FALSE,
>> meaning that
>> the accumulate should have not even matched the fact that made it
>> through.
>>
>> After scratching my head for a while and trying a bunch of random
>> stuff, I
>> found that the problem resolved itself when I changed these
>> variable names
>> to be distinct.  IE, instead of two nearly identical rules with  
>> nearly
>> identical accumulate functions in which the result variables were
>> named the
>> same - ?result, I changed the names to the equivalent of ?result_a  
>> and
>> ?result_b and this problem went away.  It's like the second  
>> accumulate
>> function was already finding the result variable that was generated
>> by the
>> first accumulate, and automatically plopping the contents into the
>> second
>> ?someList.
>>
>> I'm thinking this is a Jess bug, but I am not positive about that
>> (I am
>> pretty new to Jess).  I am using Jess 7.0 as well (not sure what
>> build), so
>> I suppose it also could have been corrected since then.  Hopefully
>> this
>> example is enough to illustrate what's happening, as I have already
>> rambled
>> on for a while now.  If more detail is required, I will have to
>> replicate
>> the problem differently since the actual code is my company's
>> property.
>>
>> .
>>
>>          This message and any attachments contain information from
>> Union Pacific which may be confidential and/or privileged.
>> If you are not the intended recipient, be aware that any
>> disclosure, copying, distribution or use of the contents of this
>> message is strictly prohibited by law. If you receive this message
>> in error, please contact the sender immediately and delete the
>> message and any attachments.
>>
>>
>>
>> --------------------------------------------------------------------
>> To unsubscribe, send the words 'unsubscribe jess-users
>> you@...'
>> in the BODY of a message to majordomo@..., NOT to the list
>> (use your own address!) List problems? Notify owner-jess-
>> users@....
>> --------------------------------------------------------------------
>
> ---------------------------------------------------------
> Ernest Friedman-Hill
> Informatics & Decision Sciences          Phone: (925) 294-2154
> Sandia National Labs                FAX:   (925) 294-2234
> PO Box 969, MS 9012                 ejfried@...
> Livermore, CA 94550                 http://www.jessrules.com
>
>
>
>
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users  
> you@...'
> in the BODY of a message to majordomo@..., NOT to the list
> (use your own address!) List problems? Notify owner-jess-
> users@....
> --------------------------------------------------------------------
>
>
>
>
> .                                                                      
>                                                                        
>          This message and any attachments contain information from  
> Union Pacific which may be confidential and/or privileged.
> If you are not the intended recipient, be aware that any  
> disclosure, copying, distribution or use of the contents of this  
> message is strictly prohibited by law. If you receive this message  
> in error, please contact the sender immediately and delete the  
> message and any attachments.
>
>
>
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users  
> you@...'
> in the BODY of a message to majordomo@..., NOT to the list
> (use your own address!) List problems? Notify owner-jess-
> users@....
> --------------------------------------------------------------------

---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences          Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
PO Box 969, MS 9012                 ejfried@...
Livermore, CA 94550                 http://www.jessrules.com




--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users you@...'
in the BODY of a message to majordomo@..., NOT to the list
(use your own address!) List problems? Notify owner-jess-users@....
--------------------------------------------------------------------