diff --git a/nal/opennars2/vision.sage b/nal/opennars2/vision.sage new file mode 100644 index 0000000000000000000000000000000000000000..7a88ea7119bea4cdde1222ef02f592f47f7ba5e1 --- /dev/null +++ b/nal/opennars2/vision.sage @@ -0,0 +1,9 @@ +#Generates input for the vision system, use https://sagecell.sagemath.org/ +A=random_matrix(RR,30,30) +with open("Output.txt", "w") as text_file: + for i in range(30): + for j in range(30): + di = i/(size-1)*2-1 + dj = j/(size-1)*2-1 + text_file.write("<A["+str(di.n())+","+str(dj.n())+"] --> [bright]>. :|: %"+str(A[i,j])+"%\n") +show(plot(A)) \ No newline at end of file diff --git a/nal/test/nal7.15.nal b/nal/test/nal7.15.nal index 002d0a478f07301d4d4bab5ef27a5d91c8a4f02f..ebc174cea286b0aac367eaddbd93ddb0a0268505 100644 --- a/nal/test/nal7.15.nal +++ b/nal/test/nal7.15.nal @@ -1,5 +1,5 @@ '********** temporal analogy - IN: <<(*, $x, door_101) --> open> =/> <(*, $x, room_101) --> enter>>. %0.95% - IN: <<(*, $x, room_101) --> enter> <=> <(*, $x, corridor_100) --> leave>>. +<<(*, $x, door_101) --> open> =/> <(*, $x, room_101) --> enter>>. %0.95% +<<(*, $x, room_101) --> enter> <|> <(*, $x, corridor_100) --> leave>>. 40 -''outputMustContain('<<door_101 --> (/,open,$1,_)> =/> <(*,$1,corridor_100) --> leave>>. %0.95;0.81%') +''outputMustContain('<<(*,$1,door_101) --> open> =/> <(*,$1,corridor_100) --> leave>>. %0.95;0.81%') diff --git a/nal/test/nal7.18.nal b/nal/test/nal7.18.nal index 9f313f37e27a92244af1f20105635311af75202a..8a4d0b5aa24ab7e074728b0aa5c5fc3e04e6444f 100644 --- a/nal/test/nal7.18.nal +++ b/nal/test/nal7.18.nal @@ -1,7 +1,7 @@ '********** inference on tense - IN: <(&/,<(*, $x, key_101) --> hold>,+1) =/> <(*, $x, room_101) --> enter>>. - IN: <(*, John, key_101) --> hold>. :\: +<(&/,<(*, $x, key_101) --> hold>,+100) =/> <(*, $x, room_101) --> enter>>. +<(*, John, key_101) --> hold>. :\: 210 -''outputMustContain('<(*,John,room_101) --> enter>. :\: %1.00;0.81%') +''outputMustContain('<(*,John,room_101) --> enter>. :!95: %1.00;0.81%') 'this one is working, but throws an exception diff --git a/nal/test/nal7.19.nal b/nal/test/nal7.19.nal index d2d9a77e7ba2fba22023b6ac80c2c9f753e199db..08ea484184a3d872556898663e20dbbd894527e5 100644 --- a/nal/test/nal7.19.nal +++ b/nal/test/nal7.19.nal @@ -1,5 +1,5 @@ '********** inference on tense - IN: <(&/,<(*, $x, key_101) --> hold>,+1) =/> <(*, $x, room_101) --> enter>>. - IN: <(*,John,room_101) --> enter>. :|: +<(&/,<(*, $x, key_101) --> hold>,+100) =/> <(*, $x, room_101) --> enter>>. +<(*,John,room_101) --> enter>. :|: 15 -''outputMustContain('<(*,John,key_101) --> hold>. :\: %1.00;0.45%') +''outputMustContain('<(*,John,key_101) --> hold>. :!-105: %1.00;0.45%') diff --git a/nal/test/nal7.2.nal b/nal/test/nal7.2.nal index fcc3bc4d4acb4595673246779e3e52777e8d7359..929bb1689053b93d461f4bc967110203cbbd18a0 100644 --- a/nal/test/nal7.2.nal +++ b/nal/test/nal7.2.nal @@ -1,10 +1,10 @@ '********** inference on tense - IN: <<(*,John,key_101) --> hold> =/> <(*,John,room_101) --> enter>>. +<<(*,John,key_101) --> hold> =/> <(*,John,room_101) --> enter>>. - IN: <(*,John,key_101) --> hold>. :|: +<(*,John,key_101) --> hold>. :|: 20 -''outputMustContain('<(*,John,room_101) --> enter>. :/: %1.00;0.81%') +''outputMustContain('<(*,John,room_101) --> enter>. :!5: %1.00;0.81%') diff --git a/nal/test/nal7.3.nal b/nal/test/nal7.3.nal index f3069afb6d320f59141e274a40a393f1884d994f..50e9b50e8ad662f893623c892c83e037cf346a4c 100644 --- a/nal/test/nal7.3.nal +++ b/nal/test/nal7.3.nal @@ -6,5 +6,5 @@ 3 -''outputMustContain('<(*,John,key_101) --> hold>. :\: %1.00;0.45%') +''outputMustContain('<(*,John,key_101) --> hold>. :!-10: %1.00;0.45%') diff --git a/nal/test/nal7.35.nal b/nal/test/nal7.35.nal index fcc3bc4d4acb4595673246779e3e52777e8d7359..929bb1689053b93d461f4bc967110203cbbd18a0 100644 --- a/nal/test/nal7.35.nal +++ b/nal/test/nal7.35.nal @@ -1,10 +1,10 @@ '********** inference on tense - IN: <<(*,John,key_101) --> hold> =/> <(*,John,room_101) --> enter>>. +<<(*,John,key_101) --> hold> =/> <(*,John,room_101) --> enter>>. - IN: <(*,John,key_101) --> hold>. :|: +<(*,John,key_101) --> hold>. :|: 20 -''outputMustContain('<(*,John,room_101) --> enter>. :/: %1.00;0.81%') +''outputMustContain('<(*,John,room_101) --> enter>. :!5: %1.00;0.81%') diff --git a/nal/test/nal7.4.nal b/nal/test/nal7.4.nal index 5a0de91e9e3ab4385dfb29fc4e5f0862b76c4201..8c7287c83deca0fee31d7d77bc1becd7804f6d3f 100644 --- a/nal/test/nal7.4.nal +++ b/nal/test/nal7.4.nal @@ -7,5 +7,4 @@ 10 -''outputMustContain('<<(*,John,room_101) --> enter> =\> (&/,<(*,John,door_101) --> open>,+3)>. :|: %1.00;0.45%') -'adjusted +2 to +3 \ No newline at end of file +''outputMustContain('<<(*,John,room_101) --> enter> =\> (&/,<(*,John,door_101) --> open>,+6)>. :!6: %1.00;0.45%') \ No newline at end of file diff --git a/nal/test/nal7.5.nal b/nal/test/nal7.5.nal index 5575b14246d272d389931c25c2d46b2179cdd353..705b193b1420d63f04d53b4e81fc1c4332e14e26 100644 --- a/nal/test/nal7.5.nal +++ b/nal/test/nal7.5.nal @@ -8,8 +8,8 @@ 10 -''outputMustContain('<(&/,<(*,John,door_101) --> open>,+4) =/> <(*,John,room_101) --> enter>>. :|: %0.00;0.45%') -''outputMustContain('<(&/,<(*,John,door_101) --> open>,+4) </> <(*,John,room_101) --> enter>>. :|: %0.00;0.45%') +''outputMustContain('<(&/,<(*,John,door_101) --> open>,+11) =/> <(*,John,room_101) --> enter>>. :!11: %0.00;0.45%') +''outputMustContain('<(&/,<(*,John,door_101) --> open>,+11) </> <(*,John,room_101) --> enter>>. :!11: %0.00;0.45%') 'adjusted +3 to +4 'original output (1.3.3): diff --git a/nal/test/nal7.6.nal b/nal/test/nal7.6.nal index b2b5ef340cf272bc74aa7d9ebe789bf04f8e98cf..a0fdbf64971b248b32dc8ed9891ba6ad74ccde6f 100644 --- a/nal/test/nal7.6.nal +++ b/nal/test/nal7.6.nal @@ -7,11 +7,11 @@ <John --> (/,enter,_,room_101)>. :|: 20 -''outputMustContain('<<John --> (/,enter,_,room_101)> =\> (&/,<John --> (/,open,_,door_101)>,+3)>. :|: %1.00;0.45%') +''outputMustContain('<<John --> (/,enter,_,room_101)> =\> (&/,<John --> (/,open,_,door_101)>,+6)>. :!6: %1.00;0.45%') 'new: variable introduction also in time: -''outputMustContain('<<$1 --> (/,enter,_,room_101)> =\> (&/,<$1 --> (/,open,_,door_101)>,+3)>. :|: %1.00;0.45%') +''outputMustContain('<<$1 --> (/,enter,_,room_101)> =\> (&/,<$1 --> (/,open,_,door_101)>,+6)>. :!6: %1.00;0.45%') 'adjusted +2 to +3 in both conditions diff --git a/nal/test/nal7.7.nal b/nal/test/nal7.7.nal index 14b1224e02a94a259fff3bc027371f0c524eb7b1..7217212b196a1736b00d3380d73e51c4e70e1e50 100644 --- a/nal/test/nal7.7.nal +++ b/nal/test/nal7.7.nal @@ -13,6 +13,6 @@ 20 -''outputMustContain('<(&/,<(*,John,key_101) --> hold>,+4,<(*,John,door_101) --> open>) =/> <(*,John,room_101) --> enter>>. :|: %1.00;0.45%') +''outputMustContain('<(&|,<(*,John,door_101) --> open>,<(*,John,key_101) --> hold>) =|> <(*,John,room_101) --> enter>>. :!0: %1.00;0.40%') 'changed fomr +2 to +4 due to changes in interval calculations 'this one is working, just throwing exception diff --git a/nal/test/nal7.8.nal b/nal/test/nal7.8.nal index c8db0f37ef9a681e10827a691387fb7dacd5e700..b6f172cd7eb5aa81c723736f7a49c00499f0c93c 100644 --- a/nal/test/nal7.8.nal +++ b/nal/test/nal7.8.nal @@ -9,6 +9,7 @@ <(*,John,key_101) --> hold>? :|: 200 - -''outputMustContain('<John --> (/,hold,_,key_101)>. :\: %0.50;0.95%') - +//revision on events +''outputMustContain('<John --> (/,hold,_,key_101)>. :!0: %0.52;0.95%') +//but also looking at it as separate: +''outputMustContain('<John --> (/,hold,_,key_101)>. :!6: %0.00;0.90%') diff --git a/nal/test/nal7.implication_before.nal b/nal/test/nal7.implication_before.nal deleted file mode 100644 index 3fc67135d3c03f271dd6af750956baa335055fd5..0000000000000000000000000000000000000000 --- a/nal/test/nal7.implication_before.nal +++ /dev/null @@ -1,8 +0,0 @@ -********** -<(^pick,stefan) =/> <stefan --> good>>. -<stefan --> good>! -30 -<stefan --> good>. :|: -30 -''outputMustContain('<(&/,(^pick,stefan),+4) =/> <stefan --> good>>. :\: %0.00;0.48%') -''outputMustContain('<(&/,(^pick,$1),+4) =/> <$1 --> good>>. :\: %0.00;0.48%') diff --git a/nal/test/nal7.vardetach1.nal b/nal/test/nal7.vardetach1.nal new file mode 100644 index 0000000000000000000000000000000000000000..6035ad2a398841789149a994ce44cee5c329cc64 --- /dev/null +++ b/nal/test/nal7.vardetach1.nal @@ -0,0 +1,5 @@ +********** +<(&/,<$1 --> A>,+100) =/> <$1 --> B>>. %1.00;0.90% +<x --> B>. :|: %1.00;0.90% +30 +''outputMustContain('<x --> A>. :!-105: %1.00;0.45%') diff --git a/nal/test/nal7.vardetach2.nal b/nal/test/nal7.vardetach2.nal new file mode 100644 index 0000000000000000000000000000000000000000..4b360c3e3bc35657103f43b7ea01b4487f1a99ca --- /dev/null +++ b/nal/test/nal7.vardetach2.nal @@ -0,0 +1,5 @@ +********** +<(&/,<$1 --> A>,+100) =/> <$1 --> B>>. %1.00;0.90% +<x --> A>. :|: %1.00;0.90% +30 +''outputMustContain('<x --> B>. :!100: %1.00;0.81%') diff --git a/nal/test/nal7.vardetach3.nal b/nal/test/nal7.vardetach3.nal new file mode 100644 index 0000000000000000000000000000000000000000..5c3c929bf9cf9e25e12bcb89e8b5c672d19c2d66 --- /dev/null +++ b/nal/test/nal7.vardetach3.nal @@ -0,0 +1,5 @@ +********** //no interval, should we even support it? +<<$1 --> A> =/> <$1 --> B>>. %1.00;0.90% +<x --> B>. :|: %1.00;0.90% +30 +''outputMustContain('<x --> A>. :!-5: %1.00;0.45%') diff --git a/nal/test/nal7.vardetach4.nal b/nal/test/nal7.vardetach4.nal new file mode 100644 index 0000000000000000000000000000000000000000..04f3ca9618e5b839c960228c21920c4bf2451b7f --- /dev/null +++ b/nal/test/nal7.vardetach4.nal @@ -0,0 +1,5 @@ +********** //no interval, should we even support it? +<<$1 --> A> =/> <$1 --> B>>. %1.00;0.90% +<x --> A>. :|: %1.00;0.90% +30 +''outputMustContain('<x --> B>. :!5: %1.00;0.81%') diff --git a/nal/test/nal8.1.0.nal b/nal/test/nal8.1.0.nal index 0f34c8aabc59e2a37e0d054ec40820ddb4e2c239..f92772707d418bb920e5b116a4f071c715556291 100755 --- a/nal/test/nal8.1.0.nal +++ b/nal/test/nal8.1.0.nal @@ -2,5 +2,5 @@ <(&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,<(*,{t001}) --> ^open>) =/> <{t001} --> [opened]>>. 20 -''outputMustContain('(&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,<(*,{t001}) --> ^open>)! %1.00;0.81%') +''outputMustContain('(&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,(^open,{t001}))! %1.00;0.81%') ' working in GUI but not in testcase, maybe the following string needs some escapes? but where? diff --git a/nal/test/nal8.1.1.nal b/nal/test/nal8.1.1.nal index 9d3a764366572d69e77b4f45f719a81fe15fdc36..5dd170f9e854bda14145f44e9318111006d6c061 100755 --- a/nal/test/nal8.1.1.nal +++ b/nal/test/nal8.1.1.nal @@ -1,4 +1,4 @@ ********** [10 -> 11]: - IN: (&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,(^open,{t001}))! -5 +(&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,(^open,{t001}))! +10 ''outputMustContain('<(*,SELF,{t002}) --> hold>! %1.00;0.81%') diff --git a/nal/test/nal8.1.10.nal b/nal/test/nal8.1.10.nal index eddbd477a0064ee2417ac01bf3847de827a13e60..afbf37a396c3c30f2f3b95c04a491f37cc77cb96 100755 --- a/nal/test/nal8.1.10.nal +++ b/nal/test/nal8.1.10.nal @@ -1,5 +1,5 @@ <{t003} --> (/,at,SELF,_)>. :\: <{t003} --> (/,on,{t002},_)>. :\: 33 -''outputMustContain('(&&,<#1 --> (/,at,SELF,_)>,<#1 --> (/,on,{t002},_)>). :\: %1.00;0.43%') +''outputMustContain('(&&,<#1 --> (/,at,SELF,_)>,<#1 --> (/,on,{t002},_)>). :!-5: %1.00;0.81%') diff --git a/nal/test/nal8.1.11.nal b/nal/test/nal8.1.11.nal index 0bd3f01354abdf700f6320a1197486955cae4261..7b9fb844005a3f76641579cde226851396e2634e 100755 --- a/nal/test/nal8.1.11.nal +++ b/nal/test/nal8.1.11.nal @@ -1,4 +1,4 @@ ********** [21 -> 22] - IN: (&|,<#1 --> (/,on,{t002},_)>,<#1 --> (/,at,SELF,_)>). :\: +(&|,<#1 --> (/,on,{t002},_)>,<#1 --> (/,at,SELF,_)>). :\: 8 -''outputMustContain('(&|,<#1 --> (/,on,{t002},_)>,<(*,SELF,#1) --> at>). :\: %1.00;0.90%') +''outputMustContain('(&|,<#1 --> (/,on,{t002},_)>,<(*,SELF,#1) --> at>). :!-5: %1.00;0.90%') diff --git a/nal/test/nal8.1.13.nal b/nal/test/nal8.1.13.nal index 484a93d4e695b2b3908ace015835212e812c8290..a815f2f7f4b566f426611f08493c72e6fc717b27 100755 --- a/nal/test/nal8.1.13.nal +++ b/nal/test/nal8.1.13.nal @@ -1,5 +1,5 @@ ********** [23 + 06 -> 24] - IN: (&|,<(*,{t002},#1) --> on>,<(*,SELF,#1) --> at>). :|: - IN: <(&|,<(*,$1,$2) --> on>,<(*,SELF,$2) --> at>) =|> <(*,SELF,$1) --> reachable>>. +(&|,<(*,{t002},#1) --> on>,<(*,SELF,#1) --> at>). :|: +<(&|,<(*,$1,$2) --> on>,<(*,SELF,$2) --> at>) =|> <(*,SELF,$1) --> reachable>>. 260 -''outputMustContain('<(*,SELF,{t002}) --> reachable>. :|: %1.00;0.19%') +''outputMustContain('<(*,SELF,{t002}) --> reachable>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.1.14.nal b/nal/test/nal8.1.14.nal index be877500d94c073eac680efc03717854687628d6..193be1d77323225b7130379592fbe3c33f67eafa 100755 --- a/nal/test/nal8.1.14.nal +++ b/nal/test/nal8.1.14.nal @@ -1,5 +1,5 @@ ********** [24 + 12 -> 25] - IN: <(*,SELF,{t002}) --> reachable>. :|: - IN: (&/,<(*,SELF,{t002}) --> reachable>,(^pick,{t002}))! +<(*,SELF,{t002}) --> reachable>. :|: +(&/,<(*,SELF,{t002}) --> reachable>,(^pick,{t002}))! 45 ''outputMustContain('(^pick,{t002})! %1.00;0.43%') diff --git a/nal/test/nal8.1.16.nal b/nal/test/nal8.1.16.nal index 80c7c3b56bf1e9212c8fbf805b3655143101e404..d58dc6f641332c74a06c54f652793e3ce4972766 100755 --- a/nal/test/nal8.1.16.nal +++ b/nal/test/nal8.1.16.nal @@ -1,5 +1,5 @@ ********** [24 + 05 -> 27] - IN: <(*,SELF,{t002}) --> reachable>. :|: - IN: <(&/,<(*,SELF,{t002}) --> reachable>,(^pick,{t002}))=/><(*,SELF,{t002}) --> hold>>. +<(*,SELF,{t002}) --> reachable>. :|: +<(&/,<(*,SELF,{t002}) --> reachable>,(^pick,{t002}))=/><(*,SELF,{t002}) --> hold>>. 1 -''outputMustContain('<(^pick,{t002}) =/> <(*,SELF,{t002}) --> hold>>. :\: %1.00;0.81%') +''outputMustContain('<(^pick,{t002}) =/> <(*,SELF,{t002}) --> hold>>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.1.17.nal b/nal/test/nal8.1.17.nal index c47ab7dc825fad900a91342db4ae065a53ec87f2..125fddc96c3c4c0c4dbe37ac6cd06415f45f403d 100755 --- a/nal/test/nal8.1.17.nal +++ b/nal/test/nal8.1.17.nal @@ -1,5 +1,5 @@ ********** [26 + 27 -> 28] - IN: (^pick,{t002}). :\: - IN: <(^pick,{t002})=/><(*,SELF,{t002}) --> hold>>. :\: +(^pick,{t002}). :\: +<(^pick,{t002})=/><(*,SELF,{t002}) --> hold>>. :\: 20 -''outputMustContain('<(*,SELF,{t002}) --> hold>. :/: %1.00;0.43%') +''outputMustContain('<(*,SELF,{t002}) --> hold>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.1.18.nal b/nal/test/nal8.1.18.nal index 009608d2bb3325688fb81eb332f7a6c855eceb37..513b8298871564e30403d2e629f8affe1ff8b66c 100755 --- a/nal/test/nal8.1.18.nal +++ b/nal/test/nal8.1.18.nal @@ -1,5 +1,5 @@ ' ********** [28 + 10 -> 29] - IN: <(*,SELF,{t002}) --> hold>. :|: - IN: (&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,(^open,{t001}))! +<(*,SELF,{t002}) --> hold>. :|: +(&/,<(*,SELF,{t002}) --> hold>,+100,<(*,SELF,{t001}) --> at>,+100,(^open,{SELF},{t001}))! 30 -''outputMustContain('(&/,<(*,SELF,{t001}) --> at>,(^open,{t001}))! %1.00;0.43%') +''outputMustContain('(&/,<(*,SELF,{t001}) --> at>,+100,(^open,{SELF},{t001}))! :!100: %1.00;0.73%') diff --git a/nal/test/nal8.1.19.nal b/nal/test/nal8.1.19.nal index 82efdf3744b971b26d6f7b448ec99ed9ab7e292b..42ae0f6d8c9313d46a5a84a577809e5627898b57 100755 --- a/nal/test/nal8.1.19.nal +++ b/nal/test/nal8.1.19.nal @@ -1,5 +1,5 @@ ********** [03 + 28 -> 30] - IN: <(&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,(^open,{t001}))=/><{t001} --> [opened]>>. %1.00;0.90% {0 : 1} - IN: <(*,SELF,{t002}) --> hold>. :|: -2 -''outputMustContain('<(&/,<(*,SELF,{t001}) --> at>,(^open,{t001})) =/> <{t001} --> [opened]>>. %1.00;0.43%') +<(&/,<(*,SELF,{t002}) --> hold>,<(*,SELF,{t001}) --> at>,(^open,{SELF},{t001})) =/> <{t001} --> [opened]>>. %1.00;0.90% +<(*,SELF,{t002}) --> hold>. :|: +200 +''outputMustContain('<(&/,<(*,SELF,{t001}) --> at>,(^open,{SELF},{t001})) =/> <{t001} --> [opened]>>. %1.00;0.43%') diff --git a/nal/test/nal8.1.2.nal b/nal/test/nal8.1.2.nal index 5b0dee24468dd0f67f7801361b4cf9056ba7067f..57ac7e9a5c98a3dc7dd091b83e9c6230647940a1 100755 --- a/nal/test/nal8.1.2.nal +++ b/nal/test/nal8.1.2.nal @@ -1,4 +1,4 @@ ********** [12 -> 13]: - IN: (&/,<(*,SELF,{t002}) --> reachable>,(^pick,{t002}))! +(&/,<(*,SELF,{t002}) --> reachable>,(^pick,{t002}))! 5 ''outputMustContain('<(*,SELF,{t002}) --> reachable>! %1.00;0.81%') diff --git a/nal/test/nal8.1.20.nal b/nal/test/nal8.1.20.nal index 365e1e17d070735288a9d7445314bd5cbc7c47f9..da3c11ff098351f6d9398a4a44fb16da08ba127e 100755 --- a/nal/test/nal8.1.20.nal +++ b/nal/test/nal8.1.20.nal @@ -1,4 +1,4 @@ ********** [29 -> 31] - IN: (&/,<(*,SELF,{t001}) --> at>,(^open,{t001}))! +(&/,<(*,SELF,{t001}) --> at>,(^open,{t001}))! 13 ''outputMustContain('<(*,SELF,{t001}) --> at>! %1.00;0.81%') diff --git a/nal/test/nal8.1.23.nal b/nal/test/nal8.1.23.nal index c4424f51914469d477559e60400dedb4245205b4..5b0aadd7f43ec45f6ba97fce2cf91065a2d5a888 100755 --- a/nal/test/nal8.1.23.nal +++ b/nal/test/nal8.1.23.nal @@ -1,9 +1,9 @@ ********** [33 + 09 -> 34] - IN: (^go-to,{t001}). :\: - IN: <(^go-to,$1)=/><(*,SELF,$1) --> at>>. +(^go-to,{SELF},{t001}). :\: +<(^go-to,{SELF},$1)=/><(*,{SELF},$1) --> at>>. 41 -IN: <(*,SELF,{t001}) --> at>? :\: +IN: <(*,{SELF},{t001}) --> at>? :\: 140 -''outputMustContain('<(*,SELF,{t001}) --> at>. :\: %1.00;0.81%') +''outputMustContain('<(*,{SELF},{t001}) --> at>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.1.24.nal b/nal/test/nal8.1.24.nal index 7618a51b6b7c14c51ab23e12593df5775220228e..78035d34b086d362ecda272192b3ab82f7d829c0 100755 --- a/nal/test/nal8.1.24.nal +++ b/nal/test/nal8.1.24.nal @@ -1,5 +1,5 @@ ********** [34 + 30 -> 35] - IN: <(*,SELF,{t001}) --> at>. :|: - IN: <(&/,<(*,SELF,{t001}) --> at>,(^open,{t001}))=/><{t001} --> [opened]>>. :|: +<(*,SELF,{t001}) --> at>. :|: +<(&/,<(*,SELF,{t001}) --> at>,+100,(^open,{t001}))=/><{t001} --> [opened]>>. :|: 20 -''outputMustContain('<(^open,{t001}) =/> <{t001} --> [opened]>>. :\: %1.00;0.43%') +''outputMustContain('<(^open,{t001}) =/> <{t001} --> [opened]>>. :!100: %1.00;0.81%') diff --git a/nal/test/nal8.1.25.nal b/nal/test/nal8.1.25.nal index 0022f23dc0c0742fe0f652d07256069f6ba930d7..64e96bed5e1c805ab48333c7f1ad84c0e0310dc6 100755 --- a/nal/test/nal8.1.25.nal +++ b/nal/test/nal8.1.25.nal @@ -1,5 +1,5 @@ ********** [34 + 29 -> 36] - IN: <(*,SELF,{t001}) --> at>. :|: - IN: (&/,<(*,SELF,{t001}) --> at>,(^open,{t001}))! + <(*,SELF,{t001}) --> at>. :|: + (&/,<(*,SELF,{t001}) --> at>,(^open,{SELF},{t001}))! 25 -''outputMustContain('(^open,{t001})! %1.00;0.43%') +''outputMustContain('(^open,{SELF},{t001})! %1.00;0.43%') diff --git a/nal/test/nal8.1.27.nal b/nal/test/nal8.1.27.nal index 95eecc5824fba9d48ba2c53e57092cad7be96ff8..4d5b748ac4ecdf686bcf25f8320c3627bc5fcb12 100755 --- a/nal/test/nal8.1.27.nal +++ b/nal/test/nal8.1.27.nal @@ -1,5 +1,5 @@ ********** [35 + 37 -> 38] - IN: <(^open,{t001})=/><{t001} --> [opened]>>. :|: - IN: (^open,{t001}). :|: +<(^open,{SELF},{t001})=/><{t001} --> [opened]>>. :|: +(^open,{SELF},{t001}). :|: 1 -''outputMustContain('<{t001} --> [opened]>. :/: %1.00;0.43%') +''outputMustContain('<{t001} --> [opened]>. :!5: %1.00;0.81%') diff --git a/nal/test/nal8.1.3.nal b/nal/test/nal8.1.3.nal index a48b894ed8b2f39e2ed9d30e2704e45d0ed7f4f5..61f298429b5fb89c77414a00798bc3c5d58bc332 100755 --- a/nal/test/nal8.1.3.nal +++ b/nal/test/nal8.1.3.nal @@ -1,5 +1,5 @@ ********** [13 + 06 -> 14]: - IN: <(*,SELF,{t002}) --> reachable>! - IN: <(&|,<(*,$1,#2) --> on>,<(*,SELF,#2) --> at>)=|><(*,SELF,$1) --> reachable>>. +<(*,SELF,{t002}) --> reachable>! +<(&|,<(*,$1,#2) --> on>,<(*,SELF,#2) --> at>)=|><(*,SELF,$1) --> reachable>>. 10 ''outputMustContain('(&|,<(*,SELF,#1) --> at>,<(*,{t002},#1) --> on>)! %1.00;0.81%') diff --git a/nal/test/nal8.1.4.nal b/nal/test/nal8.1.4.nal index 2935cd1b0a9d4e9c3191aa61a81929f026839d49..841b9f040f9ac2f834131a08f8f1387c21a39406 100755 --- a/nal/test/nal8.1.4.nal +++ b/nal/test/nal8.1.4.nal @@ -1,5 +1,5 @@ ********** [07 + 14 -> 15]: - IN: <(*,{t002},{t003}) --> on>. :|: - IN: (&|,<(*,{t002},#1) --> on>,<(*,#1,SELF) --> at>)! +<(*,{t002},{t003}) --> on>. :|: +(&|,<(*,{t002},#1) --> on>,<(*,#1,SELF) --> at>)! 350 -''outputMustContain('<(*,{t003},SELF) --> at>! :\: %1.00;0.81%') +''outputMustContain('<(*,{t003},SELF) --> at>! %1.00;0.43%') diff --git a/nal/test/nal8.1.5.nal b/nal/test/nal8.1.5.nal index 23dbbd9229c0be91e3d45bf64c8bb8b357bbea26..8eba9938a1ab1b8f93c4c84d294563512cbff4e6 100755 --- a/nal/test/nal8.1.5.nal +++ b/nal/test/nal8.1.5.nal @@ -1,5 +1,5 @@ ********** [15 + 09 -> 16]: - IN: <(*,SELF,{t003}) --> at>! - IN: <(^go-to,$1)=/><(*,SELF,$1) --> at>>. +<(*,SELF,{t003}) --> at>! +<(^go-to,$1)=/><(*,SELF,$1) --> at>>. 100 ''outputMustContain('(^go-to,{t003})! %1.00;0.81%') diff --git a/nal/test/nal8.1.7.nal b/nal/test/nal8.1.7.nal index 6b220c830bc0e6be98bbfcb2a16aa73a25d079f0..0b39168398b9d206ccaf7abe54d85da9503f6ef1 100755 --- a/nal/test/nal8.1.7.nal +++ b/nal/test/nal8.1.7.nal @@ -1,4 +1,4 @@ <(*,{t003}) --> ^go-to>. :|: <<(*,$1) --> ^go-to> =/> <(*,SELF,$1) --> at>>. 20 -''outputMustContain('<(*,SELF,{t003}) --> at>. :/: %1.00;0.81%') +''outputMustContain('<(*,SELF,{t003}) --> at>. :!5: %1.00;0.81%') diff --git a/nal/test/nal8.1.8.nal b/nal/test/nal8.1.8.nal index 8abf6bea2ff63fd5400f61479b3c73e01a5c269c..55a1808183d0ca5c936dd3b54373e89c77a68415 100755 --- a/nal/test/nal8.1.8.nal +++ b/nal/test/nal8.1.8.nal @@ -1,4 +1,4 @@ ********** [18 -> 19] - IN: <SELF --> (/,at,_,{t003})>. :\: +<SELF --> (/,at,_,{t003})>. :\: 6 -''outputMustContain('<{t003} --> (/,at,SELF,_)>. :\: %1.00;0.90%') +''outputMustContain('<{t003} --> (/,at,SELF,_)>. :!-5: %1.00;0.90%') diff --git a/nal/test/nal8.1.9.nal b/nal/test/nal8.1.9.nal index a0301ed425e6c9b9847219092d50647e5354ae07..c4ecad7f1fe074d4db270e1eb5a0699816cef10a 100755 --- a/nal/test/nal8.1.9.nal +++ b/nal/test/nal8.1.9.nal @@ -1,5 +1,5 @@ ********** [07 -> 20] - IN: <(*,{t002},{t003}) --> on>. :|: +<(*,{t002},{t003}) --> on>. :|: 6 -''outputMustContain('<{t003} --> (/,on,{t002},_)>. :\: %1.00;0.90%') +''outputMustContain('<{t003} --> (/,on,{t002},_)>. :!0: %1.00;0.90%') diff --git a/nal/test/nal8.2.1.nal b/nal/test/nal8.2.1.nal index ef9fe78dd387eba4167d0b8de8b6f668dd678fce..9c598148ab34b2d39741db7d4912cd45e125919e 100644 --- a/nal/test/nal8.2.1.nal +++ b/nal/test/nal8.2.1.nal @@ -1,5 +1,5 @@ ********** [10 + 05 -> 11] - IN: <(&/,<(*,Self,{t002}) --> hold>,(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. - IN: <(&/,<(*,Self,{t002}) --> reachable>,(^pick,{t002})) =/> <(*,Self,{t002}) --> hold>>. +<(&/,<(*,Self,{t002}) --> hold>,(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. +<(&/,<(*,Self,{t002}) --> reachable>,(^pick,{t002})) =/> <(*,Self,{t002}) --> hold>>. 40 ''outputMustContain('<(&/,<(*,Self,{t002}) --> reachable>,(^pick,{t002}),(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. %1.00;0.81%') diff --git a/nal/test/nal8.2.2.nal b/nal/test/nal8.2.2.nal index 07a6ed318f9a74706cfd8fd6563884d7cf17a798..415722698f5ee8d1d39758c14d456cd95a8e83b7 100644 --- a/nal/test/nal8.2.2.nal +++ b/nal/test/nal8.2.2.nal @@ -1,6 +1,6 @@ ********** [06 + 07 -> 12] - IN: <(&|,<(*,$1,$2) --> on>,<(*,Self,$2) --> at>) =|> <(*,Self,$1) --> reachable>>. - IN: <(*,{t002},{t003}) --> on>. :|: -8 -''outputMustContain('<<(*,Self,{t003}) --> at> =|> <(*,Self,{t002}) --> reachable>>. :\: %1.00;0.81%') +<(&|,<(*,$1,$2) --> on>,<(*,Self,$2) --> at>) =|> <(*,Self,$1) --> reachable>>. +<(*,{t002},{t003}) --> on>. :|: +80 +''outputMustContain('<<(*,Self,{t003}) --> at> =|> <(*,Self,{t002}) --> reachable>>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.2.3.nal b/nal/test/nal8.2.3.nal index 240247b0b38e7df4a709697fad29ad68ecc85853..f1e7e5b6273a4dd87ed6f955a7d0c73a6263ad3d 100644 --- a/nal/test/nal8.2.3.nal +++ b/nal/test/nal8.2.3.nal @@ -1,5 +1,5 @@ ********** [13 + 09 -> 14] - IN: <(&/,<(*,Self,{t003}) --> at>,(^pick,{t002}),(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. :|: - IN: <(^go-to,$1) =/> <(*,Self,$1) --> at>>. +<(&/,<(*,Self,{t003}) --> at>,(^pick,{t002}),(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. :|: +<(^go-to,$1) =/> <(*,Self,$1) --> at>>. 16 ''outputMustContain('<(&/,(^go-to,{t003}),(^pick,{t002}),(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. %1.00;0.43%') diff --git a/nal/test/nal8.2.4.nal b/nal/test/nal8.2.4.nal index 85cf536586850fdff13eabf7724aca17035047df..86b45cbee5bc333f69b48140b741a481d6ed4cc0 100644 --- a/nal/test/nal8.2.4.nal +++ b/nal/test/nal8.2.4.nal @@ -1,5 +1,5 @@ ********** [01 + 14 -> 15] - IN: <{t001} --> [opened]>! - IN: <(&/,(^go-to,{t003}),(^pick,{t002}),(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. :|: +<{t001} --> [opened]>! +<(&/,(^go-to,{t003}),(^pick,{t002}),(^go-to,{t001}),(^open,{t001})) =/> <{t001} --> [opened]>>. :|: 24 ''outputMustContain('(&/,(^go-to,{t003}),(^pick,{t002}),(^go-to,{t001}),(^open,{t001}))! %1.00;0.43%') diff --git a/nal/test/nal8.3.0.nal b/nal/test/nal8.3.0.nal index d374240614f1a74eca6e3eefae4f11d1fbfc55a9..e23eff3120a98c5bbc3a2f7876687c4476a032cb 100644 --- a/nal/test/nal8.3.0.nal +++ b/nal/test/nal8.3.0.nal @@ -1,6 +1,6 @@ ********** [01 + 06 -> 10]: - IN: <{t001} --> [opened]>! - IN: <(&/,<(*,Self,{t001}) --> at>,(^break,{t001})) =/> <{t001} --> [opened]>>. +<{t001} --> [opened]>! +<(&/,<(*,Self,{t001}) --> at>,(^break,{t001})) =/> <{t001} --> [opened]>>. 28 ''outputMustContain('(&/,<(*,Self,{t001}) --> at>,(^break,{t001}))! %1.00;0.81%') diff --git a/nal/test/nal8.3.1.nal b/nal/test/nal8.3.1.nal index 9202078d6265322da051be8ce8367ec3acab7fc3..e243a8cc2227c750555d74e9199c3a5f7b8f6401 100644 --- a/nal/test/nal8.3.1.nal +++ b/nal/test/nal8.3.1.nal @@ -1,6 +1,6 @@ ********** [10 + 07 -> 11]: - IN: (&/,<(*,Self,{t001}) --> at>,(^break,{t001}))! - IN: <(*,Self,{t001}) --> at>. :|: +(&/,<(*,Self,{t001}) --> at>,(^break,{t001}))! +<(*,Self,{t001}) --> at>. :|: 25 ''outputMustContain('(^break,{t001})! %1.00;0.43%') diff --git a/nal/test/nal8.3.2.nal b/nal/test/nal8.3.2.nal index c7b468b5fec85a35b17290f78d5fa24df1ef31c1..84bbd03f952f2647149ed8ec96307f4cd46ea484 100644 --- a/nal/test/nal8.3.2.nal +++ b/nal/test/nal8.3.2.nal @@ -1,6 +1,6 @@ ********** [09 + 08 -> 12]: - IN: <(^break,$1) =/> <$1 --> [damaged]>>. - IN: <{t001} --> [damaged]>! +<(^break,$1) =/> <$1 --> [damaged]>>. +<{t001} --> [damaged]>! 17 ''outputMustContain('(^break,{t001})! %1.00;0.81%') diff --git a/nal/test/nal8.3.3.nal b/nal/test/nal8.3.3.nal index d2bf5783a3c89fe1d35e20b422e11924b8c9a1c9..3b1067d4d4bd8055557145ac88a79c11cafaebe8 100644 --- a/nal/test/nal8.3.3.nal +++ b/nal/test/nal8.3.3.nal @@ -1,7 +1,7 @@ ********** [12 + 11 -> 13]: - IN: (^break,{t001})! %0.00;0.86% +(^break,{t001})! %0.00;0.86% 1 - IN: (^break,{t001})! %1.00;0.73% +(^break,{t001})! %1.00;0.73% 1 ''outputMustContain('(^break,{t001})! %0.31;0.90%') diff --git a/nal/test/nal8.3.4.nal b/nal/test/nal8.3.4.nal index 4cad258dce5d6219f436c46bd4e6213e1cf415b2..f8457d03831365311a11fea903b8ca5ec6b9403f 100644 --- a/nal/test/nal8.3.4.nal +++ b/nal/test/nal8.3.4.nal @@ -1,6 +1,6 @@ ********** [13 + 14 -> 15]: - IN: (^break,{t001})! %0.31;0.89% +(^break,{t001})! %0.31;0.89% 1 - IN: (^break,{t001})! %1.00;0.95% +(^break,{t001})! %1.00;0.95% 1 ''outputMustContain('(^break,{t001})! %0.79;0.96%') diff --git a/nal/test/nal8.4.0.nal b/nal/test/nal8.4.0.nal index d6e0e960784a48ac35d015ba95b1b5fd695345de..271c490bee50fd36da5152090a2da48503c02583 100644 --- a/nal/test/nal8.4.0.nal +++ b/nal/test/nal8.4.0.nal @@ -1,6 +1,6 @@ ********** [04 + 03 -> 05]: - IN: <(*,Self,key001) --> reachable>. :|: - IN: <(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. +<(*,Self,key001) --> reachable>. :|: +<(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. 1 -''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :\: %1.00;0.81%') +''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.4.1.nal b/nal/test/nal8.4.1.nal index c7b8a5a25773d2341cc8368a159134ff8368568b..c3e329ff2d3ee544bec7da652419d25e96a16ba0 100644 --- a/nal/test/nal8.4.1.nal +++ b/nal/test/nal8.4.1.nal @@ -1,6 +1,6 @@ ********** [05 + 01 -> 06]: - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: - IN: <(*,Self,key001) --> hold>! +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: +<(*,Self,key001) --> hold>! 8 ''outputMustContain('(^pick,key001)! %1.00;0.43%') diff --git a/nal/test/nal8.4.2.nal b/nal/test/nal8.4.2.nal index ff4aa7b6725d79eaf9922a8b6755a39bdbbb6dcc..7c062ea8b9ac76008f14b9b13bf028e033492c93 100644 --- a/nal/test/nal8.4.2.nal +++ b/nal/test/nal8.4.2.nal @@ -1,6 +1,6 @@ ********** [07 + 05 -> 08]: - IN: (^pick,key001). :\: - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. +(^pick,key001). :\: +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. 15 -''outputMustContain('<(*,Self,key001) --> hold>. :\: %1.00;0.81%') +''outputMustContain('<(*,Self,key001) --> hold>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.4.3.nal b/nal/test/nal8.4.3.nal index 509828eb0f582ff27a5ca2edaa3b24339e3e0ee5..6f0cd28556695be6fff500f751ec72f8ac4c46b8 100644 --- a/nal/test/nal8.4.3.nal +++ b/nal/test/nal8.4.3.nal @@ -1,6 +1,6 @@ ********** [08 + 09 -> 10]: - IN: <(*,Self,key001) --> hold>. :|: %1.00;0.81% +<(*,Self,key001) --> hold>. :|: %1.00;0.81% 1 - IN: <(*,Self,key001) --> hold>. :|: +<(*,Self,key001) --> hold>. :|: 5 -''outputMustContain('<(*,Self,key001) --> hold>. :|: %1.00;0.93%') +''outputMustContain('<(*,Self,key001) --> hold>. :!1: %1.00;0.93%') diff --git a/nal/test/nal8.4.4.nal b/nal/test/nal8.4.4.nal index bf3a638f0bedafe84994ddd85e643747836cead7..c8a1318aebb944d0829cd4eb7207b85d5ee5561e 100644 --- a/nal/test/nal8.4.4.nal +++ b/nal/test/nal8.4.4.nal @@ -1,10 +1,10 @@ ********** [02 + 10 -> 11]: - IN: <(*,Self,key001) --> hold>. :|: %0% +<(*,Self,key001) --> hold>. :|: %0% 5 - IN: <(*,Self,key001) --> hold>. :|: %1.00;0.91% +<(*,Self,key001) --> hold>. :|: %1.00;0.91% 5 - IN: <(*,Self,key001) --> hold>? :|: +<(*,Self,key001) --> hold>? :|: 50 -''outputMustContain('<(*,Self,key001) --> hold>. :\: %0.53;0.95%') +''outputMustContain('<(*,Self,key001) --> hold>. :!5: %0.53;0.95%') diff --git a/nal/test/nal8.4.5.nal b/nal/test/nal8.4.5.nal deleted file mode 100644 index e78beaae1b4c77aff838bfd9eea08b599085f9f6..0000000000000000000000000000000000000000 --- a/nal/test/nal8.4.5.nal +++ /dev/null @@ -1,7 +0,0 @@ - -********** [07 + 11 -> 12]: - IN: (^pick,key001). :\: - IN: <(*,Self,key001) --> hold>. :|: -5 -''outputMustContain('<(&/,(^pick,key001),+3) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.45%') -'adjusted +2 to +3 \ No newline at end of file diff --git a/nal/test/nal8.4.6.nal b/nal/test/nal8.4.6.nal index 37679e366a66eda866b388dae16920677b23aa51..4f77df983c14160b1ccb8d433559898b416a13d0 100644 --- a/nal/test/nal8.4.6.nal +++ b/nal/test/nal8.4.6.nal @@ -1,5 +1,5 @@ ********** [05 + 12 -> 13]: - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :\: %1.00;0.90% - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :\: %1.00;0.45% +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :\: %1.00;0.90% +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :\: %1.00;0.45% 35 -''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :\: %1.00;0.91%') +''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :!-5: %1.00;0.91%') diff --git a/nal/test/nal8.4.7.nal b/nal/test/nal8.4.7.nal index b22132251029671dafd2ac01e096ccede528e3f6..daa365915ff7f9993bd1bf05169dfe83f7a7ea4c 100644 --- a/nal/test/nal8.4.7.nal +++ b/nal/test/nal8.4.7.nal @@ -1,9 +1,8 @@ ********** [04 + 13 -> 14]: - IN: <(*,Self,key001) --> reachable>. :|: +<(*,Self,key001) --> reachable>. :|: 11 - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: 20 -''outputMustContain('<(&/,<(*,Self,key001) --> reachable>,+4,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.45%') -'adjusted +3 to +4 +''outputMustContain('<(&/,<(*,Self,key001) --> reachable>,+11,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. :!11: %1.00;0.45%') diff --git a/nal/test/nal8.5.0.nal b/nal/test/nal8.5.0.nal index 9512b5ab6086d5fd22ea7482017c82b981318d45..e7c61ac48c4f013d91625c52377da552b80965e9 100644 --- a/nal/test/nal8.5.0.nal +++ b/nal/test/nal8.5.0.nal @@ -1,6 +1,6 @@ ********** [03 + 04 -> 05]: - IN: <(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. - IN: <(*,Self,key001) --> reachable>. :|: +<(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. +<(*,Self,key001) --> reachable>. :|: 1 -''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :\: %1.00;0.81%') +''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :!0: %1.00;0.81%') diff --git a/nal/test/nal8.5.1.nal b/nal/test/nal8.5.1.nal index 71d0282d749b1555655bbbb492d870f84508e335..2c5fe42d2d8a88ce35d1712935853188ea21b9ec 100644 --- a/nal/test/nal8.5.1.nal +++ b/nal/test/nal8.5.1.nal @@ -1,6 +1,6 @@ ********** [05 + 01 -> 06]: - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.81% - IN: <(*,Self,key001) --> hold>! +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.81% +<(*,Self,key001) --> hold>! 10 ''outputMustContain('(^pick,key001)! %1.00;0.40%') diff --git a/nal/test/nal8.5.2.nal b/nal/test/nal8.5.2.nal index c78dcf657151752faffc7d045e2c5daeb65532a3..f8aeecdb85c0f0760738c40cebc6cf742a40186f 100644 --- a/nal/test/nal8.5.2.nal +++ b/nal/test/nal8.5.2.nal @@ -1,6 +1,6 @@ ********** [07 + 05 -> 08]: - IN: (^pick,key001). :|: - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.81% +(^pick,key001). :|: +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.81% 8 -''outputMustContain('<(*,Self,key001) --> hold>. :/: %1.00;0.38%') +''outputMustContain('<(*,Self,key001) --> hold>. :!5: %1.00;0.73%') diff --git a/nal/test/nal8.5.3.nal b/nal/test/nal8.5.3.nal index fc9a2e380a482db970b4bc34a980d784b4dae867..81c7d912943602d2743bfc4320004bb0657275f2 100644 --- a/nal/test/nal8.5.3.nal +++ b/nal/test/nal8.5.3.nal @@ -1,7 +1,7 @@ ********** [08 + 09 -> 10]: - IN: <(*,Self,key001) --> hold>. :|: %1.00;0.73% +<(*,Self,key001) --> hold>. :|: %1.00;0.73% 6 - IN: <(*,Self,key001) --> hold>. :|: %1.00;0.90% +<(*,Self,key001) --> hold>. :|: %1.00;0.90% 10 -''outputMustContain('<(*,Self,key001) --> hold>. :|: %1.00;0.92%') +''outputMustContain('<(*,Self,key001) --> hold>. :!6: %1.00;0.92%') diff --git a/nal/test/nal8.5.4.nal b/nal/test/nal8.5.4.nal index c22ada55295cc725a22c0fd7f79a24b263e18632..379b12bf5abcd8acdf9d48664eec4034dafaf964 100644 --- a/nal/test/nal8.5.4.nal +++ b/nal/test/nal8.5.4.nal @@ -1,8 +1,10 @@ ********** [07 + 09 -> 11]: - IN: (^pick,key001). :|: %1.00;0.90% +<a --> A>. :|: +10 +(^pick,{SELF},key001). :|: %1.00;0.90% 11 - IN: <(*,Self,key001) --> hold>. :|: +<(*,Self,key001) --> hold>. :|: 16 -''outputMustContain('<(&/,(^pick,key001),+4) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.45%) +''outputMustContain('<(&/,<a --> A>,+10,(^pick,{SELF},key001),+11) =/> <(*,Self,key001) --> hold>>. :!21: %1.00;0.42%) 'adjusted +3 to +4 ^ diff --git a/nal/test/nal8.5.5.nal b/nal/test/nal8.5.5.nal index 092b4e5fcef3974f1236e8279aef42c7a37c7725..b798582404f18ed5e7ddfb3ad3c2688aa3b03b38 100644 --- a/nal/test/nal8.5.5.nal +++ b/nal/test/nal8.5.5.nal @@ -1,7 +1,7 @@ ********** [05 + 11 -> 12]: - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.81% {0 : 0 : 1} -11 - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.45% {1 : 1 : 2} +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.81% +1 +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.45% 10 -''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.84%') +''outputMustContain('<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :!1: %1.00;0.84%') diff --git a/nal/test/nal8.5.6.nal b/nal/test/nal8.5.6.nal index cc7249e850740f66d53b533d73fb3ec3c004a0f2..9100fd49d724720a4ded18180ed5f26705c1d107 100644 --- a/nal/test/nal8.5.6.nal +++ b/nal/test/nal8.5.6.nal @@ -1,9 +1,9 @@ ********** [04 + 12 -> 13]: - IN: <(*,Self,key001) --> reachable>. :|: +<(*,Self,key001) --> reachable>. :|: 11 - IN: <(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.84% +<(^pick,key001) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.84% 17 -''outputMustContain('<(&/,<(*,Self,key001) --> reachable>,+4,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. :|: %1.00;0.43%') +''outputMustContain('<(&/,<(*,Self,key001) --> reachable>,+11,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. :!11: %1.00;0.43%') 'adjusted +3 to +4 diff --git a/nal/test/nal8.5.7.nal b/nal/test/nal8.5.7.nal index e5e301a6699812005542e323d24268f7b1131e0b..2ae211d275faedd6a3a2afddd6c3aeffa8c43549 100644 --- a/nal/test/nal8.5.7.nal +++ b/nal/test/nal8.5.7.nal @@ -1,8 +1,8 @@ ********** [03 + 13 -> 14]: - IN: <(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. %1.00;0.90% +<(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. %1.00;0.90% 1 - IN: <(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. %1.00;0.43% +<(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. %1.00;0.43% 1 ''outputMustContain('<(&/,<(*,Self,key001) --> reachable>,(^pick,key001)) =/> <(*,Self,key001) --> hold>>. %1.00;0.91%') diff --git a/nars_core/nars/control/DerivationContext.java b/nars_core/nars/control/DerivationContext.java index 8e12f4d3c49b7c371f82fb9bc00dc6dca56b1f5c..070f3589b32cf7a48ce36948e12b4ce56185a016 100644 --- a/nars_core/nars/control/DerivationContext.java +++ b/nars_core/nars/control/DerivationContext.java @@ -63,9 +63,9 @@ public class DerivationContext { } public boolean derivedTask(final Task task, final boolean revised, final boolean single, boolean overlapAllowed, boolean addToMemory) { - if(task.sentence.isGoal() && (task.sentence.term instanceof Implication || + if((task.sentence.isGoal() || task.sentence.isQuest()) && (task.sentence.term instanceof Implication || task.sentence.term instanceof Equivalence)) { - return false; //implication and equivalence goals are not supported anymore + return false; //implication and equivalence goals and quests are not supported anymore } if (!task.budget.aboveThreshold()) { @@ -74,7 +74,7 @@ public class DerivationContext { } if (task.sentence != null && task.sentence.truth != null) { float conf = task.sentence.truth.getConfidence(); - if (conf == 0) { + if (conf < Parameters.TRUTH_EPSILON) { //no confidence - we can delete the wrongs out that way. memory.removeTask(task, "Ignored (zero confidence)"); return false; @@ -236,23 +236,6 @@ public class DerivationContext { return null; } - /** - * Shared final operations by all double-premise rules, called from the - * rules except StructuralRules - * - * @param newContent The content of the sentence in task - * @param newTruth The truth value of the sentence in task - * @param newBudget The budget value in task - * @param revisible Whether the sentence is revisible - */ - // public void doublePremiseTask(Term newContent, TruthValue newTruth, BudgetValue newBudget, boolean revisible) { - // if (newContent != null) { - // Sentence taskSentence = currentTask.getSentence(); - // Sentence newSentence = new Sentence(newContent, taskSentence.getPunctuation(), newTruth, newStamp, revisible); - // Task newTask = new Task(newSentence, newBudget, currentTask, currentBelief); - // derivedTask(newTask, false, false); - // } - // } /** * Shared final operations by all single-premise rules, called in * StructuralRules diff --git a/nars_core/nars/entity/Sentence.java b/nars_core/nars/entity/Sentence.java index ec988a02ae48bd3bb531e310bd9ab8e896bcb6f7..a79eb84de4cad9104d6c9a1c7d3d639863353e94 100644 --- a/nars_core/nars/entity/Sentence.java +++ b/nars_core/nars/entity/Sentence.java @@ -110,7 +110,7 @@ public class Sentence<T extends Term> implements Cloneable, Serializable { //refined: int u = 0; while(c.term[c.term.length-1-u] instanceof Interval) { - time += ((Interval)c.term[c.term.length-1]).time; + time += ((Interval)c.term[c.term.length-1-u]).time; u++; } @@ -123,6 +123,24 @@ public class Sentence<T extends Term> implements Cloneable, Serializable { if(!c.isSpatial && stamp!=null && stamp.getOccurrenceTime() != Stamp.ETERNAL) stamp.setOccurrenceTime(stamp.getOccurrenceTime()-time); } + if(c.term[0] instanceof Interval) { + long time=0; + //refined: + int u = 0; + while(c.term[u] instanceof Interval) { + time += ((Interval)c.term[u]).time; + u++; + } + + Term[] term2=new Term[c.term.length-u]; + System.arraycopy(c.term, u, term2, 0, term2.length); + _content=(T) Conjunction.make(term2, c.getTemporalOrder(), c.isSpatial); + //ok we removed a part of the interval, we have to transform the occurence time of the sentence back + //accordingly + + if(!c.isSpatial && stamp!=null && stamp.getOccurrenceTime() != Stamp.ETERNAL) + stamp.setOccurrenceTime(stamp.getOccurrenceTime()+time); + } } } } @@ -497,12 +515,15 @@ public class Sentence<T extends Term> implements Cloneable, Serializable { Long Int = diffabs; timediff = diff>0 ? "+"+String.valueOf(Int) : "-"+String.valueOf(Int); } - String tenseString = ":"+timediff+":"; //stamp.getTense(t, nar.memory.getDuration()); + if(Parameters.TEST_RUNNING) { + timediff = "!"+String.valueOf(stamp.getOccurrenceTime()); + } + + String tenseString = ":"+timediff+":"; //stamp.getTense(t, nar.memory.getDuration()); if(stamp.getOccurrenceTime() == Stamp.ETERNAL) tenseString=""; - CharSequence stampString = showStamp ? stamp.name() : null; int stringLength = contentName.length() + tenseString.length() + 1 + 1; diff --git a/nars_core/nars/inference/CompositionalRules.java b/nars_core/nars/inference/CompositionalRules.java index 1b2e8b222b5d5f3429112248a6240e89567734c2..5110b15df16f2123236a4ab06405484119fd3578 100644 --- a/nars_core/nars/inference/CompositionalRules.java +++ b/nars_core/nars/inference/CompositionalRules.java @@ -297,10 +297,10 @@ public final class CompositionalRules { if (isTemporalConjunction && (compound.getTemporalOrder() == TemporalRules.ORDER_FORWARD) && (index != 0)) { return; } - long occurrence_time = nal.getTheNewStamp().getOccurrenceTime(); + long occurrence_time = nal.getCurrentTask().sentence.getOccurenceTime(); if(isTemporalConjunction && (compound.getTemporalOrder() == TemporalRules.ORDER_FORWARD)) { if(!nal.getCurrentTask().sentence.isEternal() && compound.term[index + 1] instanceof Interval) { - long shift_occurrence = ((Interval)compound.term[1]).time; + long shift_occurrence = ((Interval)compound.term[index + 1]).time; occurrence_time = nal.getCurrentTask().sentence.getOccurenceTime() + shift_occurrence; } } diff --git a/nars_core/nars/inference/RuleTables.java b/nars_core/nars/inference/RuleTables.java index 55931bb8a65e57f97a7a869560e2a050178ff7e8..6e55776915a0deb87badd653f2cce9d0553c9ad6 100644 --- a/nars_core/nars/inference/RuleTables.java +++ b/nars_core/nars/inference/RuleTables.java @@ -267,7 +267,7 @@ public class RuleTables { Operation op = (Operation) taskTerm; if(op.getPredicate() == nal.memory.getOperator("^want")) { TruthValue newTruth = TruthFunctions.deduction(task.sentence.truth, Parameters.reliance); - nal.singlePremiseTask(beliefTerm, Symbols.GOAL_MARK, newTruth, BudgetFunctions.forward(newTruth, nal)); + nal.singlePremiseTask(((Operation)taskTerm).getArguments().term[1], Symbols.GOAL_MARK, newTruth, BudgetFunctions.forward(newTruth, nal)); } } } @@ -440,8 +440,10 @@ public class RuleTables { } t1 = beliefStatement.getPredicate(); t2 = taskStatement.getPredicate(); - SyllogisticRules.abdIndCom(t1, t2, taskSentence, belief, figure, nal); - + boolean sensational = SyllogisticRules.abdIndCom(t1, t2, taskSentence, belief, figure, nal); + if(sensational) { + return; + } CompositionalRules.composeCompound(taskStatement, beliefStatement, 0, nal); //if(taskSentence.getOccurenceTime()==Stamp.ETERNAL && belief.getOccurenceTime()==Stamp.ETERNAL) CompositionalRules.introVarOuter(taskStatement, beliefStatement, 0, nal);//introVarImage(taskContent, beliefContent, index, memory); @@ -495,7 +497,10 @@ public class RuleTables { t1 = taskStatement.getSubject(); t2 = beliefStatement.getSubject(); if (!SyllogisticRules.conditionalAbd(t1, t2, taskStatement, beliefStatement, nal)) { // if conditional abduction, skip the following - SyllogisticRules.abdIndCom(t1, t2, taskSentence, belief, figure, nal); + boolean sensational = SyllogisticRules.abdIndCom(t1, t2, taskSentence, belief, figure, nal); + if(sensational) { + return; + } CompositionalRules.composeCompound(taskStatement, beliefStatement, 1, nal); CompositionalRules.introVarOuter(taskStatement, beliefStatement, 1, nal);// introVarImage(taskContent, beliefContent, index, memory); @@ -760,13 +765,10 @@ public class RuleTables { } else if (compound.containsTerm(component)) { StructuralRules.structuralCompound(compound, component, compoundTask, index, nal); } -// } else if ((compound instanceof Negation) && !memory.getCurrentTask().isStructural()) { } else if (compound instanceof Negation) { if (compoundTask) { if (compound.term[0] instanceof CompoundTerm) StructuralRules.transformNegation((CompoundTerm)compound.term[0], nal); - } else { - StructuralRules.transformNegation(compound, nal); } } } @@ -827,10 +829,11 @@ public class RuleTables { if (task.sentence.isJudgment()) { if (statement instanceof Inheritance) { StructuralRules.structuralCompose1(compound, index, statement, nal); - if (!(compound instanceof SetExt || compound instanceof SetInt || compound instanceof Negation)) { + if (!(compound instanceof SetExt || compound instanceof SetInt || compound instanceof Negation + || compound instanceof Conjunction || compound instanceof Disjunction)) { StructuralRules.structuralCompose2(compound, index, statement, side, nal); } // {A --> B, A @ (A&C)} |- (A&C) --> (B&C) - } else if ((statement instanceof Similarity) && !(compound instanceof Conjunction)) { + } else if (!(compound instanceof Negation || compound instanceof Conjunction || compound instanceof Disjunction)) { StructuralRules.structuralCompose2(compound, index, statement, side, nal); } // {A <-> B, A @ (A&C)} |- (A&C) <-> (B&C) } diff --git a/nars_core/nars/inference/SyllogisticRules.java b/nars_core/nars/inference/SyllogisticRules.java index beb3afd5f834cdb2150ca0d435056c13393f208c..2f1ba89cb263d81585cd0dc6469ae1cb7df61538 100644 --- a/nars_core/nars/inference/SyllogisticRules.java +++ b/nars_core/nars/inference/SyllogisticRules.java @@ -125,9 +125,9 @@ public final class SyllogisticRules { * removed? * @param nal Reference to the memory */ - static void abdIndCom(Term term1, Term term2, final Sentence sentence1, final Sentence sentence2, final int figure, final DerivationContext nal) { + static boolean abdIndCom(Term term1, Term term2, final Sentence sentence1, final Sentence sentence2, final int figure, final DerivationContext nal) { if (Statement.invalidStatement(term1, term2) || Statement.invalidPair(term1, term2)) { - return; + return false; } int order1 = sentence1.term.getTemporalOrder(); int order2 = sentence2.term.getTemporalOrder(); @@ -165,29 +165,45 @@ public final class SyllogisticRules { budget3 = BudgetFunctions.forward(truth3, nal); } - long delta2 = 0; - while ((term2 instanceof Conjunction) && (((CompoundTerm) term2).term[0] instanceof Interval)) { + if(term1.imagination != null && term2.imagination != null) { + TruthValue T = term1.imagination.AbductionOrComparisonTo(term2.imagination, true); + nal.doublePremiseTask( + Statement.make(NativeOperator.SIMILARITY, term1, term2, TemporalRules.ORDER_NONE), + T, budget3.clone(),false, false); + TruthValue T2 = term1.imagination.AbductionOrComparisonTo(term2.imagination, false); + nal.doublePremiseTask( + Statement.make(NativeOperator.INHERITANCE, term1, term2, TemporalRules.ORDER_NONE), + T2, budget3.clone(),false, false); + TruthValue T3 = term2.imagination.AbductionOrComparisonTo(term1.imagination, false); + nal.doublePremiseTask( + Statement.make(NativeOperator.INHERITANCE, term2, term1, TemporalRules.ORDER_NONE), + T3, budget3.clone(),false, false); + return true; //no need for other syllogistic inference, it were sensational terms, + } //but it would not hurt to allow it either.. but why afford tasks that summarize + //so little evidence in comparison to the amount summarized by the array comparison. + long occurrence_time2 = nal.getCurrentTask().sentence.getOccurenceTime(); + while (occurrence_time2!=Stamp.ETERNAL && (term2 instanceof Conjunction) && (((CompoundTerm) term2).term[0] instanceof Interval)) { Interval interval = (Interval) ((CompoundTerm) term2).term[0]; - delta2 += interval.time; + occurrence_time2 += interval.time; term2 = ((CompoundTerm)term2).setComponent(0, null, nal.mem()); } - long delta1 = 0; - while ((term1 instanceof Conjunction) && (((CompoundTerm) term1).term[0] instanceof Interval)) { + long occurrence_time1 = nal.getCurrentTask().sentence.getOccurenceTime(); + while (occurrence_time1!=Stamp.ETERNAL && (term1 instanceof Conjunction) && (((CompoundTerm) term1).term[0] instanceof Interval)) { Interval interval = (Interval) ((CompoundTerm) term1).term[0]; - delta1 += interval.time; + occurrence_time1 += interval.time; term1 = ((CompoundTerm)term1).setComponent(0, null, nal.mem()); } if (order != ORDER_INVALID) { - nal.getTheNewStamp().setOccurrenceTime(delta1); + nal.getTheNewStamp().setOccurrenceTime(occurrence_time1); nal.doublePremiseTask( Statement.make(taskContent, term1, term2, order), truth1, budget1,false, false); - nal.getTheNewStamp().setOccurrenceTime(delta2); + nal.getTheNewStamp().setOccurrenceTime(occurrence_time2); nal.doublePremiseTask( Statement.make(taskContent, term2, term1, reverseOrder(order)), truth2, budget2,false, false); - nal.getTheNewStamp().setOccurrenceTime(delta1); + nal.getTheNewStamp().setOccurrenceTime(occurrence_time1); nal.doublePremiseTask( Statement.makeSym(taskContent, term1, term2, order), truth3, budget3,false, false); @@ -217,6 +233,7 @@ public final class SyllogisticRules { Statement.make(NativeOperator.SIMILARITY, term1, term2, TemporalRules.ORDER_NONE), truth3, budget3.clone(),false, false); } + return false; } @@ -414,14 +431,13 @@ public final class SyllogisticRules { return; int order = statement.getTemporalOrder(); - long occurrence_time = nal.getTheNewStamp().getOccurrenceTime(); + long occurrence_time = nal.getCurrentTask().sentence.getOccurenceTime(); if ((order != ORDER_NONE) && (order!=ORDER_INVALID)) { long baseTime = subSentence.getOccurenceTime(); - if (baseTime == Stamp.ETERNAL) { // =/> always should produce events - baseTime = nal.getTime(); + if (baseTime != Stamp.ETERNAL) { + long inc = order * Parameters.DURATION; + occurrence_time = (side == 0) ? baseTime+inc : baseTime-inc; } - long inc = order * Parameters.DURATION; - occurrence_time = (side == 0) ? baseTime+inc : baseTime-inc; } TruthValue beliefTruth = beliefSentence.truth; @@ -591,7 +607,7 @@ public final class SyllogisticRules { if (content == null) return; - long occurrence_time = nal.getTheNewStamp().getOccurrenceTime(); + long occurrence_time = nal.getCurrentTask().sentence.getOccurenceTime(); if (delta != 0) { long baseTime = taskSentence.getOccurenceTime(); if (baseTime != Stamp.ETERNAL) { diff --git a/nars_core/nars/language/Interval.java b/nars_core/nars/language/Interval.java index c0242f450707cbb92b5f8e7276d7d4eb95ecee63..722bcdf6d4461b3f720828c55a39a1bd7f149479 100644 --- a/nars_core/nars/language/Interval.java +++ b/nars_core/nars/language/Interval.java @@ -29,7 +29,7 @@ import nars.io.Symbols; public class Interval extends Term { public static Interval interval(final String i) { - return new Interval( Long.parseLong(i.substring(1)) - 1); + return new Interval(Long.parseLong(i.substring(1))); } @Override diff --git a/nars_core/nars/language/Term.java b/nars_core/nars/language/Term.java index 5d4b57185904a65dcf24413cb30cbf9f334d1c56..87ff1e441248ce0849cf6825224052a7ab13672f 100644 --- a/nars_core/nars/language/Term.java +++ b/nars_core/nars/language/Term.java @@ -176,7 +176,7 @@ public class Term implements AbstractTerm, Serializable { t.index_variable = index_variable; } t.name = name(); - + t.imagination = imagination; return t; } diff --git a/nars_core/nars/main/NAR.java b/nars_core/nars/main/NAR.java index f09f0cf8057588f29a385b930d0c593360ddec84..95ce17050ddbb8ea7a2625133f19554608523f03 100644 --- a/nars_core/nars/main/NAR.java +++ b/nars_core/nars/main/NAR.java @@ -39,6 +39,8 @@ import nars.language.Term; import nars.storage.LevelBag; import nars.io.events.Events.CyclesEnd; import nars.io.events.Events.CyclesStart; +import nars.io.events.OutputHandler; +import nars.language.Inheritance; /** @@ -260,8 +262,33 @@ public class NAR extends SensoryChannel implements Serializable,Runnable { if(addCommand(text)) { return; } - Task t = narsese.parseTask(text.trim()); - this.memory.inputTask(t); + Task task = narsese.parseTask(text.trim()); + //check if it should go to a sensory channel instead: + Term t = ((Task) task).getTerm(); + if(t != null && t instanceof Inheritance) { + Term predicate = ((Inheritance) t).getPredicate(); + if(this.sensoryChannels.containsKey(predicate)) { + Inheritance inh = (Inheritance) task.sentence.term; + Term subj = inh.getSubject(); + //map to pei's -1 to 1 indexing schema + if(subj.term_indices == null) { + String variable = subj.toString().split("\\[")[0]; + String[] vals = subj.toString().split("\\[")[1].split("\\]")[0].split(","); + double height = Double.parseDouble(vals[0]); + double width = Double.parseDouble(vals[1]); + int wval = (int) Math.round((width+1.0f)/2.0f*(this.sensoryChannels.get(predicate).width-1)); + int hval = (int) Math.round(((height+1.0f)/2.0f*(this.sensoryChannels.get(predicate).height-1))); + String newInput = "<"+variable+"["+hval+","+wval+"] --> "+predicate+">"+task.sentence.punctuation+ " :|:"; + this.emit(OutputHandler.IN.class, task); + this.addInput(newInput); + return; + } + this.sensoryChannels.get(predicate).addInput((Task) task); + return; + } + } + //else input into NARS directly: + this.memory.inputTask(task); } catch (Exception ex) { //Logger.getLogger(NAR.class.getName()).log(Level.SEVERE, null, ex); } diff --git a/nars_core/nars/main/Parameters.java b/nars_core/nars/main/Parameters.java index 48dadbb1bbdafed5d3094e33c9444e925f0f70fd..dc7e989a558f2fa08b55f750a103158c6b25f08c 100644 --- a/nars_core/nars/main/Parameters.java +++ b/nars_core/nars/main/Parameters.java @@ -42,6 +42,7 @@ public class Parameters { /** use this for advanced error checking, at the expense of lower performance. it is enabled for unit tests automatically regardless of the value here. */ public static boolean DEBUG = false; + public static boolean TEST_RUNNING = false; /** for thorough bag debugging (slow) */ public static boolean DEBUG_BAG = false; diff --git a/nars_core/nars/main/Plugins.java b/nars_core/nars/main/Plugins.java index 10a28afa8f4cf2f2cee62cc0209b71500e4d3f45..fe10d9931ffa232e893243e5d3bd6f8e02c2afdf 100644 --- a/nars_core/nars/main/Plugins.java +++ b/nars_core/nars/main/Plugins.java @@ -9,7 +9,7 @@ import nars.plugin.mental.Counting; import nars.plugin.mental.Abbreviation; import nars.language.SetInt; import nars.language.Term; -//import nars.plugin.perception.VisionChannel; +import nars.plugin.perception.VisionChannel; /** * Default set of NAR parameters which have been classically used for development. @@ -20,9 +20,9 @@ public class Plugins { n.addPlugin(new RuntimeNARSettings()); n.addPlugin(new Emotions()); n.addPlugin(new Anticipate()); // expect an event - //Term label = SetInt.make(new Term("bright")); + Term label = SetInt.make(new Term("bright")); //n.addSensoryChannel(label.toString(), - // new VisionChannel(label, n, n, 1, 1)); + // new VisionChannel(label, n, n, 30, 30)); boolean full_internal_experience = false; if(!full_internal_experience) { n.addPlugin(new InternalExperience()); diff --git a/nars_core/nars/plugin/perception/SensoryChannel.java b/nars_core/nars/plugin/perception/SensoryChannel.java index 595e1b75cd0bb8b2a31aef7a9dfa988509f3036e..027e79f3ced3d754f7e3d78137350348adca52ce 100644 --- a/nars_core/nars/plugin/perception/SensoryChannel.java +++ b/nars_core/nars/plugin/perception/SensoryChannel.java @@ -17,6 +17,8 @@ public abstract class SensoryChannel implements Serializable { private Collection<SensoryChannel> reportResultsTo; public NAR nar; //for top-down influence of concept budgets public List<Task> results = new ArrayList<Task>(); + public int height = 0; //1D channels have height 1 + public int width = 0; public SensoryChannel(){} public SensoryChannel(NAR nar, Collection<SensoryChannel> reportResultsTo) { this.reportResultsTo = reportResultsTo; diff --git a/nars_core/nars/plugin/perception/VisionChannel.java b/nars_core/nars/plugin/perception/VisionChannel.java index 95d3e9f0485735999c7baa1c0e2b027860081978..48dbfc5de73ce8bfb05b57ad9e38980754736277 100644 --- a/nars_core/nars/plugin/perception/VisionChannel.java +++ b/nars_core/nars/plugin/perception/VisionChannel.java @@ -16,8 +16,8 @@ public class VisionChannel extends SensoryChannel { double[][] inputs; boolean[][] updated; int cnt_updated = 0; - int height = 0; - int width = 0; + int px = 0; + int py = 0; Term label; NAR nar; public VisionChannel(Term label, NAR nar, SensoryChannel reportResultsTo, int width, int height) { @@ -30,13 +30,24 @@ public class VisionChannel extends SensoryChannel { updated = new boolean[height][width]; } + String subj = ""; public boolean AddToMatrix(Task t) { + Inheritance inh = (Inheritance) t.getTerm(); //channels receive inheritances + String cur_subj = inh.getSubject().index_variable.toString(); + if(!cur_subj.equals(subj)) { //when subject changes, we start to collect from scratch, + cnt_updated = 0; //this way multiple matrices can be processed by the same vision channel + updated = new boolean[height][width]; + subj = cur_subj; + } int x = t.getTerm().term_indices[2]; int y = t.getTerm().term_indices[3]; - inputs[y][x] = t.sentence.getTruth().getFrequency(); if(!updated[y][x]) { + inputs[y][x] = t.sentence.getTruth().getFrequency(); cnt_updated++; updated[y][x] = true; + } else { //a second value, so take average of frequencies + //revision wouldn't be proper as each sensory point can just have 1 vote + inputs[y][x] = (inputs[y][x]+t.sentence.getTruth().getFrequency()) / 2.0f; } if(cnt_updated == height*width) { cnt_updated = 0; @@ -53,10 +64,24 @@ public class VisionChannel extends SensoryChannel { return nar; } + int termid=0; @Override public void step_start() { - Sentence s = new Sentence(Inheritance.make(new Term("A"), this.label), + termid++; + Term V = new Term(subj+termid); + //the visual space has to be a copy. + float[][] cpy = new float[height][width]; + for(int i=0;i<height;i++) { + for(int j=0;j<width;j++) { + cpy[i][j] = (float) inputs[i][j]; + } + } + VisualSpace vspace = new VisualSpace(nar, cpy, py, px, height, width); + //attach sensation to term: + V.imagination = vspace; + + Sentence s = new Sentence(Inheritance.make(V, this.label), Symbols.JUDGMENT_MARK, new TruthValue(1.0f, Parameters.DEFAULT_JUDGMENT_CONFIDENCE), @@ -67,5 +92,4 @@ public class VisionChannel extends SensoryChannel { this.results.add(T);//feeds results into "upper" sensory channels: this.step_finished(); } - } diff --git a/nars_core/nars/plugin/perception/VisualSpace.java b/nars_core/nars/plugin/perception/VisualSpace.java index 47a3249820a00d038a0f9ee8172628587c3c728d..96398f772657a6b6f917f55e0c7c2fb5b1bd1c02 100644 --- a/nars_core/nars/plugin/perception/VisualSpace.java +++ b/nars_core/nars/plugin/perception/VisualSpace.java @@ -72,8 +72,8 @@ public class VisualSpace implements ImaginationSpace { TruthValue sim = new TruthValue(1.0f, 0.0f); for(int i=0; i<this.height; i++) { for(int j=0; j<this.width; j++) { - int i2 = (int) (((double) this.height) * kh); - int j2 = (int) (((double) this.width) * kw); + int i2 = (int) (((double) i) * kh); + int j2 = (int) (((double) j) * kw); TruthValue t1 = new TruthValue(cropped[i][j], Parameters.DEFAULT_JUDGMENT_CONFIDENCE); TruthValue t2 = new TruthValue(other.cropped[i2][j2], Parameters.DEFAULT_JUDGMENT_CONFIDENCE); TruthValue t3 = comparison ? TruthFunctions.comparison(t1,t2) : TruthFunctions.abduction(t1,t2); diff --git a/nars_core/nars/storage/Memory.java b/nars_core/nars/storage/Memory.java index 3e02748a530f8345d7347fe50e603b59727a15d6..cc48ffa84a7419bace6ea67a5514db275461f0f1 100644 --- a/nars_core/nars/storage/Memory.java +++ b/nars_core/nars/storage/Memory.java @@ -79,7 +79,6 @@ public class Memory implements Serializable, Iterable<Concept> { //emotion meter keeping track of global emotion public final Emotions emotion = new Emotions(); - public long decisionBlock = 0; public Task lastDecision = null; public boolean allowExecution = true; @@ -143,6 +142,7 @@ public class Memory implements Serializable, Iterable<Concept> { this.seq_current.clear(); cycle = 0; emotion.resetEmotions(); + this.lastDecision = null; resetStatic(); event.emit(ResetEnd.class); } diff --git a/nars_test/nars/core/NALTest.java b/nars_test/nars/core/NALTest.java index 5f305d0b8bf6451a18db37db74a19bb5ce6b7c6d..8f44df78b1b8725b128ccfc749c5b0e77eb397f3 100644 --- a/nars_test/nars/core/NALTest.java +++ b/nars_test/nars/core/NALTest.java @@ -30,6 +30,7 @@ public class NALTest { static { Memory.randomNumber.setSeed(1); Parameters.DEBUG = true; + Parameters.TEST_RUNNING = true; } int minCycles = 1550; //TODO reduce this to one or zero to avoid wasting any extra time during tests diff --git a/nars_test/nars/core/NALTestSome.java b/nars_test/nars/core/NALTestSome.java index c8fb787ffb88a6ca8124e4cba9babf1731c208b3..47bbe1c901e431ca8f2c336520668b4268166f58 100644 --- a/nars_test/nars/core/NALTestSome.java +++ b/nars_test/nars/core/NALTestSome.java @@ -1,55 +1,55 @@ -package nars.core; - -import java.io.File; -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - - -/** - * runs a subset of the test cases, selected by the boolean include(filename) function - */ -@RunWith(Parameterized.class) -public class NALTestSome extends NALTest { - - static { - showOutput = true; - showSuccess = showOutput; - showTrace = false; - } - - public static boolean include(String filename) { - //return true; //filename.startsWith("nal6.8.nal"); - return filename.startsWith("nars_multistep_3"); - } - - - @Parameterized.Parameters - public static Collection params() { - List l = new LinkedList(); - - //File folder = new File("nal/ClassicalConditioning"); - File folder = new File("nal/test"); - - for (final File file : folder.listFiles()) { - if (file.getName().equals("README.txt") || file.getName().contains(".png")) - continue; - if (include(file.getName())) - l.add(new Object[] { file.getAbsolutePath() } ); - } - - return l; - } - - public static void main(String[] args) { - org.junit.runner.JUnitCore.runClasses(NALTestSome.class); - } - - public NALTestSome(String scriptPath) { - super(scriptPath);//, true); - - } - -} +package nars.core; + +import java.io.File; +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + + +/** + * runs a subset of the test cases, selected by the boolean include(filename) function + */ +@RunWith(Parameterized.class) +public class NALTestSome extends NALTest { + + static { + showOutput = true; + showSuccess = showOutput; + showTrace = false; + } + + public static boolean include(String filename) { + //return true; //filename.startsWith("nal6.8.nal"); + return filename.startsWith("nal7.18.nal"); + } + + + @Parameterized.Parameters + public static Collection params() { + List l = new LinkedList(); + + //File folder = new File("nal/ClassicalConditioning"); + File folder = new File("nal/test"); + + for (final File file : folder.listFiles()) { + if (file.getName().equals("README.txt") || file.getName().contains(".png")) + continue; + if (include(file.getName())) + l.add(new Object[] { file.getAbsolutePath() } ); + } + + return l; + } + + public static void main(String[] args) { + org.junit.runner.JUnitCore.runClasses(NALTestSome.class); + } + + public NALTestSome(String scriptPath) { + super(scriptPath);//, true); + + } + +}