% Copyright (C) 2006 Martin Brain, TOAST Project
% http://www.cs.bath.ac.uk/~mjb/toast/
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%            
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%                            
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#const colour=blue.
input(i0).
-value(colour,i0,0).
-value(colour,i0,1).
-value(colour,i0,2).
-value(colour,i0,3).
-value(colour,i0,4).
-value(colour,i0,5).
-value(colour,i0,6).
-value(colour,i0,7).
-value(colour,i0,8).
-value(colour,i0,9).
-value(colour,i0,10).
-value(colour,i0,11).
-value(colour,i0,12).
-value(colour,i0,13).
-value(colour,i0,14).
-value(colour,i0,15).
-value(colour,i0,16).
-value(colour,i0,17).
-value(colour,i0,18).
-value(colour,i0,19).
-value(colour,i0,20).
-value(colour,i0,21).
-value(colour,i0,22).
-value(colour,i0,23).
-value(colour,i0,24).
-value(colour,i0,25).
-value(colour,i0,26).
-value(colour,i0,27).
-value(colour,i0,28).
-value(colour,i0,29).
-value(colour,i0,30).
-value(colour,i0,31).

input(i1).
-value(colour,i1,0).
-value(colour,i1,1).
value(colour,i1,2).
-value(colour,i1,3).
-value(colour,i1,4).
-value(colour,i1,5).
value(colour,i1,6).
-value(colour,i1,7).
value(colour,i1,8).
value(colour,i1,9).
value(colour,i1,10).
value(colour,i1,11).
value(colour,i1,12).
-value(colour,i1,13).
value(colour,i1,14).
-value(colour,i1,15).
value(colour,i1,16).
-value(colour,i1,17).
value(colour,i1,18).
value(colour,i1,19).
-value(colour,i1,20).
-value(colour,i1,21).
-value(colour,i1,22).
value(colour,i1,23).
-value(colour,i1,24).
-value(colour,i1,25).
-value(colour,i1,26).
value(colour,i1,27).
-value(colour,i1,28).
-value(colour,i1,29).
value(colour,i1,30).
value(colour,i1,31).

input(i2).
-value(colour,i2,0).
value(colour,i2,1).
value(colour,i2,2).
-value(colour,i2,3).
-value(colour,i2,4).
-value(colour,i2,5).
-value(colour,i2,6).
value(colour,i2,7).
value(colour,i2,8).
value(colour,i2,9).
value(colour,i2,10).
value(colour,i2,11).
value(colour,i2,12).
-value(colour,i2,13).
-value(colour,i2,14).
value(colour,i2,15).
-value(colour,i2,16).
-value(colour,i2,17).
-value(colour,i2,18).
-value(colour,i2,19).
-value(colour,i2,20).
-value(colour,i2,21).
-value(colour,i2,22).
-value(colour,i2,23).
value(colour,i2,24).
-value(colour,i2,25).
-value(colour,i2,26).
value(colour,i2,27).
value(colour,i2,28).
-value(colour,i2,29).
value(colour,i2,30).
value(colour,i2,31).

register(R) :- input(R).
register(R) :- immediate(R).
#hide.
#show istream(C,P,IN,R1,R2,R3).
#const wordLength = 32.
bit(0..wordLength-1).
colour(blue).
output(1..3).
register(R) :- output(R).
position(blue,1..3).
time(blue,1..3).
pc(blue,1,1).
pc(blue,2,2).
pc(blue,3,3).
finishedAt(blue,3).
flag(neg).
flag(zero).
flag(over).
flag(carry).
flagStatus(blue,T,F) :- not flagChanged(blue,T,F), flagStatus(blue,T-1,F), time(blue,T), flag(F).
-flagStatus(blue,T,F) :- not flagChanged(blue,T,F), -flagStatus(blue,T-1,F), time(blue,T), flag(F).
 chosen(C,T) :- instructionChoice(C,T,I), instruction(I), time(C,T), colour(C).
 :- not chosen(C,T), time(C,T), colour(C).
instructionChoice(C,T,I) :- not -instructionChoice(C,T,I), instruction(I), time(C,T), colour(C).
-instructionChoice(C,T,I) :- not instructionChoice(C,T,I), instruction(I), time(C,T), colour(C).
 :- instructionChoice(C,T,I), instructionChoice(C,T,J), instruction(I), instruction(J), I != J, time(C,T), colour(C).
istream(C,T,I,none,none,none) :- instructionChoice(C,T,I), time(C,T), noArgInstruction(I), colour(C).
 :- not istream(C,1,I,i0,none,none), not istream(C,1,I,i1,none,none), not istream(C,1,I,i2,none,none), instructionChoice(C,1,I), unaryInstruction(I), colour(C).
istream(C,1,I,i0,none,none) :- not -istream(C,1,I,i0,none,none), instructionChoice(C,1,I), unaryInstruction(I), colour(C).
-istream(C,1,I,i0,none,none) :- not istream(C,1,I,i0,none,none), unaryInstruction(I), colour(C).
istream(C,1,I,i1,none,none) :- not -istream(C,1,I,i1,none,none), instructionChoice(C,1,I), unaryInstruction(I), colour(C).
-istream(C,1,I,i1,none,none) :- not istream(C,1,I,i1,none,none), unaryInstruction(I), colour(C).
istream(C,1,I,i2,none,none) :- not -istream(C,1,I,i2,none,none), instructionChoice(C,1,I), unaryInstruction(I), colour(C).
-istream(C,1,I,i2,none,none) :- not istream(C,1,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,1,I,i0,none,none), istream(C,1,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,1,I,i0,none,none), istream(C,1,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,1,I,i1,none,none), istream(C,1,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,1,I,i1,none,none), istream(C,1,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,1,I,i2,none,none), istream(C,1,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,1,I,i2,none,none), istream(C,1,I,i1,none,none), unaryInstruction(I), colour(C).
 :- not istream(C,2,I,i0,none,none), not istream(C,2,I,i1,none,none), not istream(C,2,I,i2,none,none), not istream(C,2,I,1,none,none), instructionChoice(C,2,I), unaryInstruction(I), colour(C).
istream(C,2,I,i0,none,none) :- not -istream(C,2,I,i0,none,none), instructionChoice(C,2,I), unaryInstruction(I), colour(C).
-istream(C,2,I,i0,none,none) :- not istream(C,2,I,i0,none,none), unaryInstruction(I), colour(C).
istream(C,2,I,i1,none,none) :- not -istream(C,2,I,i1,none,none), instructionChoice(C,2,I), unaryInstruction(I), colour(C).
-istream(C,2,I,i1,none,none) :- not istream(C,2,I,i1,none,none), unaryInstruction(I), colour(C).
istream(C,2,I,i2,none,none) :- not -istream(C,2,I,i2,none,none), instructionChoice(C,2,I), unaryInstruction(I), colour(C).
-istream(C,2,I,i2,none,none) :- not istream(C,2,I,i2,none,none), unaryInstruction(I), colour(C).
istream(C,2,I,1,none,none) :- not -istream(C,2,I,1,none,none), instructionChoice(C,2,I), unaryInstruction(I), colour(C).
-istream(C,2,I,1,none,none) :- not istream(C,2,I,1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i0,none,none), istream(C,2,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i0,none,none), istream(C,2,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i0,none,none), istream(C,2,I,1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i1,none,none), istream(C,2,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i1,none,none), istream(C,2,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i1,none,none), istream(C,2,I,1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i2,none,none), istream(C,2,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i2,none,none), istream(C,2,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,i2,none,none), istream(C,2,I,1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,1,none,none), istream(C,2,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,1,none,none), istream(C,2,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,2,I,1,none,none), istream(C,2,I,i2,none,none), unaryInstruction(I), colour(C).
 :- not istream(C,3,I,i0,none,none), not istream(C,3,I,i1,none,none), not istream(C,3,I,i2,none,none), not istream(C,3,I,1,none,none), not istream(C,3,I,2,none,none), instructionChoice(C,3,I), unaryInstruction(I), colour(C).
istream(C,3,I,i0,none,none) :- not -istream(C,3,I,i0,none,none), instructionChoice(C,3,I), unaryInstruction(I), colour(C).
-istream(C,3,I,i0,none,none) :- not istream(C,3,I,i0,none,none), unaryInstruction(I), colour(C).
istream(C,3,I,i1,none,none) :- not -istream(C,3,I,i1,none,none), instructionChoice(C,3,I), unaryInstruction(I), colour(C).
-istream(C,3,I,i1,none,none) :- not istream(C,3,I,i1,none,none), unaryInstruction(I), colour(C).
istream(C,3,I,i2,none,none) :- not -istream(C,3,I,i2,none,none), instructionChoice(C,3,I), unaryInstruction(I), colour(C).
-istream(C,3,I,i2,none,none) :- not istream(C,3,I,i2,none,none), unaryInstruction(I), colour(C).
istream(C,3,I,1,none,none) :- not -istream(C,3,I,1,none,none), instructionChoice(C,3,I), unaryInstruction(I), colour(C).
-istream(C,3,I,1,none,none) :- not istream(C,3,I,1,none,none), unaryInstruction(I), colour(C).
istream(C,3,I,2,none,none) :- not -istream(C,3,I,2,none,none), instructionChoice(C,3,I), unaryInstruction(I), colour(C).
-istream(C,3,I,2,none,none) :- not istream(C,3,I,2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i0,none,none), istream(C,3,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i0,none,none), istream(C,3,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i0,none,none), istream(C,3,I,1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i0,none,none), istream(C,3,I,2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i1,none,none), istream(C,3,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i1,none,none), istream(C,3,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i1,none,none), istream(C,3,I,1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i1,none,none), istream(C,3,I,2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i2,none,none), istream(C,3,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i2,none,none), istream(C,3,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i2,none,none), istream(C,3,I,1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,i2,none,none), istream(C,3,I,2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,1,none,none), istream(C,3,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,1,none,none), istream(C,3,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,1,none,none), istream(C,3,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,1,none,none), istream(C,3,I,2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,2,none,none), istream(C,3,I,i0,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,2,none,none), istream(C,3,I,i1,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,2,none,none), istream(C,3,I,i2,none,none), unaryInstruction(I), colour(C).
 :- istream(C,3,I,2,none,none), istream(C,3,I,1,none,none), unaryInstruction(I), colour(C).
 :- not istream(C,1,I,i0,i0,none) , not istream(C,1,I,i0,i1,none) , not istream(C,1,I,i0,i2,none) , not istream(C,1,I,i1,i0,none) , not istream(C,1,I,i1,i1,none) , not istream(C,1,I,i1,i2,none) , not istream(C,1,I,i2,i0,none) , not istream(C,1,I,i2,i1,none) , not istream(C,1,I,i2,i2,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
istream(C,1,I,i0,i0,none)  :- not -istream(C,1,I,i0,i0,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i0,i0,none)  :- not istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i0,i1,none)  :- not -istream(C,1,I,i0,i1,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i0,i1,none)  :- not istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i0,i2,none)  :- not -istream(C,1,I,i0,i2,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i0,i2,none)  :- not istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i1,i0,none)  :- not -istream(C,1,I,i1,i0,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i1,i0,none)  :- not istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i1,i1,none)  :- not -istream(C,1,I,i1,i1,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i1,i1,none)  :- not istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i1,i2,none)  :- not -istream(C,1,I,i1,i2,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i1,i2,none)  :- not istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i2,i0,none)  :- not -istream(C,1,I,i2,i0,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i2,i0,none)  :- not istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i2,i1,none)  :- not -istream(C,1,I,i2,i1,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i2,i1,none)  :- not istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,1,I,i2,i2,none)  :- not -istream(C,1,I,i2,i2,none) , instructionChoice(C,1,I), asymmetricInstruction(I), colour(C).
-istream(C,1,I,i2,i2,none)  :- not istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i0,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i0,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i1,none) , istream(C,1,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none) , istream(C,1,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- not istream(C,2,I,i0,i0,none) , not istream(C,2,I,i0,i1,none) , not istream(C,2,I,i0,i2,none) , not istream(C,2,I,i0,1,none) , not istream(C,2,I,i1,i0,none) , not istream(C,2,I,i1,i1,none) , not istream(C,2,I,i1,i2,none) , not istream(C,2,I,i1,1,none) , not istream(C,2,I,i2,i0,none) , not istream(C,2,I,i2,i1,none) , not istream(C,2,I,i2,i2,none) , not istream(C,2,I,i2,1,none) , not istream(C,2,I,1,i0,none) , not istream(C,2,I,1,i1,none) , not istream(C,2,I,1,i2,none) , not istream(C,2,I,1,1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
istream(C,2,I,i0,i0,none)  :- not -istream(C,2,I,i0,i0,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i0,i0,none)  :- not istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i0,i1,none)  :- not -istream(C,2,I,i0,i1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i0,i1,none)  :- not istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i0,i2,none)  :- not -istream(C,2,I,i0,i2,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i0,i2,none)  :- not istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i0,1,none)  :- not -istream(C,2,I,i0,1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i0,1,none)  :- not istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i1,i0,none)  :- not -istream(C,2,I,i1,i0,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i1,i0,none)  :- not istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i1,i1,none)  :- not -istream(C,2,I,i1,i1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i1,i1,none)  :- not istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i1,i2,none)  :- not -istream(C,2,I,i1,i2,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i1,i2,none)  :- not istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i1,1,none)  :- not -istream(C,2,I,i1,1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i1,1,none)  :- not istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i2,i0,none)  :- not -istream(C,2,I,i2,i0,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i2,i0,none)  :- not istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i2,i1,none)  :- not -istream(C,2,I,i2,i1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i2,i1,none)  :- not istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i2,i2,none)  :- not -istream(C,2,I,i2,i2,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i2,i2,none)  :- not istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,i2,1,none)  :- not -istream(C,2,I,i2,1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,i2,1,none)  :- not istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,1,i0,none)  :- not -istream(C,2,I,1,i0,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,1,i0,none)  :- not istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,1,i1,none)  :- not -istream(C,2,I,1,i1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,1,i1,none)  :- not istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,1,i2,none)  :- not -istream(C,2,I,1,i2,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,1,i2,none)  :- not istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,2,I,1,1,none)  :- not -istream(C,2,I,1,1,none) , instructionChoice(C,2,I), asymmetricInstruction(I), colour(C).
-istream(C,2,I,1,1,none)  :- not istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i0,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i0,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i1,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i0,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i1,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,i2,none) , istream(C,2,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none) , istream(C,2,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- not istream(C,3,I,i0,i0,none) , not istream(C,3,I,i0,i1,none) , not istream(C,3,I,i0,i2,none) , not istream(C,3,I,i0,1,none) , not istream(C,3,I,i0,2,none) , not istream(C,3,I,i1,i0,none) , not istream(C,3,I,i1,i1,none) , not istream(C,3,I,i1,i2,none) , not istream(C,3,I,i1,1,none) , not istream(C,3,I,i1,2,none) , not istream(C,3,I,i2,i0,none) , not istream(C,3,I,i2,i1,none) , not istream(C,3,I,i2,i2,none) , not istream(C,3,I,i2,1,none) , not istream(C,3,I,i2,2,none) , not istream(C,3,I,1,i0,none) , not istream(C,3,I,1,i1,none) , not istream(C,3,I,1,i2,none) , not istream(C,3,I,1,1,none) , not istream(C,3,I,1,2,none) , not istream(C,3,I,2,i0,none) , not istream(C,3,I,2,i1,none) , not istream(C,3,I,2,i2,none) , not istream(C,3,I,2,1,none) , not istream(C,3,I,2,2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
istream(C,3,I,i0,i0,none)  :- not -istream(C,3,I,i0,i0,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i0,i0,none)  :- not istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i0,i1,none)  :- not -istream(C,3,I,i0,i1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i0,i1,none)  :- not istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i0,i2,none)  :- not -istream(C,3,I,i0,i2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i0,i2,none)  :- not istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i0,1,none)  :- not -istream(C,3,I,i0,1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i0,1,none)  :- not istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i0,2,none)  :- not -istream(C,3,I,i0,2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i0,2,none)  :- not istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i1,i0,none)  :- not -istream(C,3,I,i1,i0,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i1,i0,none)  :- not istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i1,i1,none)  :- not -istream(C,3,I,i1,i1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i1,i1,none)  :- not istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i1,i2,none)  :- not -istream(C,3,I,i1,i2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i1,i2,none)  :- not istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i1,1,none)  :- not -istream(C,3,I,i1,1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i1,1,none)  :- not istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i1,2,none)  :- not -istream(C,3,I,i1,2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i1,2,none)  :- not istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i2,i0,none)  :- not -istream(C,3,I,i2,i0,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i2,i0,none)  :- not istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i2,i1,none)  :- not -istream(C,3,I,i2,i1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i2,i1,none)  :- not istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i2,i2,none)  :- not -istream(C,3,I,i2,i2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i2,i2,none)  :- not istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i2,1,none)  :- not -istream(C,3,I,i2,1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i2,1,none)  :- not istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,i2,2,none)  :- not -istream(C,3,I,i2,2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,i2,2,none)  :- not istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,1,i0,none)  :- not -istream(C,3,I,1,i0,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,1,i0,none)  :- not istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,1,i1,none)  :- not -istream(C,3,I,1,i1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,1,i1,none)  :- not istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,1,i2,none)  :- not -istream(C,3,I,1,i2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,1,i2,none)  :- not istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,1,1,none)  :- not -istream(C,3,I,1,1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,1,1,none)  :- not istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,1,2,none)  :- not -istream(C,3,I,1,2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,1,2,none)  :- not istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,2,i0,none)  :- not -istream(C,3,I,2,i0,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,2,i0,none)  :- not istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,2,i1,none)  :- not -istream(C,3,I,2,i1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,2,i1,none)  :- not istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,2,i2,none)  :- not -istream(C,3,I,2,i2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,2,i2,none)  :- not istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,2,1,none)  :- not -istream(C,3,I,2,1,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,2,1,none)  :- not istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
istream(C,3,I,2,2,none)  :- not -istream(C,3,I,2,2,none) , instructionChoice(C,3,I), asymmetricInstruction(I), colour(C).
-istream(C,3,I,2,2,none)  :- not istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i0,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i0,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i0,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,i2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i0,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,i2,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,1,none) , istream(C,3,I,2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i0,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i0,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i0,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i0,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i0,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i2,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,i2,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,1,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,1,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,1,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,1,1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,1,2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,2,i0,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,2,i1,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,2,i2,none) , asymmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none) , istream(C,3,I,2,1,none) , asymmetricInstruction(I), colour(C).
 :- not istream(C,1,I,i0,i0,none), not istream(C,1,I,i0,i1,none), not istream(C,1,I,i0,i2,none), not istream(C,1,I,i1,i1,none), not istream(C,1,I,i1,i2,none), not istream(C,1,I,i2,i2,none), instructionChoice(C,1,I), symmetricInstruction(I), colour(C).
istream(C,1,I,i0,i0,none) :- not -istream(C,1,I,i0,i0,none), instructionChoice(C,1,I), symmetricInstruction(I), colour(C).
-istream(C,1,I,i0,i0,none) :- not istream(C,1,I,i0,i0,none), symmetricInstruction(I), colour(C).
istream(C,1,I,i0,i1,none) :- not -istream(C,1,I,i0,i1,none), instructionChoice(C,1,I), symmetricInstruction(I), colour(C).
-istream(C,1,I,i0,i1,none) :- not istream(C,1,I,i0,i1,none), symmetricInstruction(I), colour(C).
istream(C,1,I,i0,i2,none) :- not -istream(C,1,I,i0,i2,none), instructionChoice(C,1,I), symmetricInstruction(I), colour(C).
-istream(C,1,I,i0,i2,none) :- not istream(C,1,I,i0,i2,none), symmetricInstruction(I), colour(C).
istream(C,1,I,i1,i1,none) :- not -istream(C,1,I,i1,i1,none), instructionChoice(C,1,I), symmetricInstruction(I), colour(C).
-istream(C,1,I,i1,i1,none) :- not istream(C,1,I,i1,i1,none), symmetricInstruction(I), colour(C).
istream(C,1,I,i1,i2,none) :- not -istream(C,1,I,i1,i2,none), instructionChoice(C,1,I), symmetricInstruction(I), colour(C).
-istream(C,1,I,i1,i2,none) :- not istream(C,1,I,i1,i2,none), symmetricInstruction(I), colour(C).
istream(C,1,I,i2,i2,none) :- not -istream(C,1,I,i2,i2,none), instructionChoice(C,1,I), symmetricInstruction(I), colour(C).
-istream(C,1,I,i2,i2,none) :- not istream(C,1,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none), istream(C,1,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none), istream(C,1,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none), istream(C,1,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none), istream(C,1,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i0,none), istream(C,1,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none), istream(C,1,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none), istream(C,1,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none), istream(C,1,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none), istream(C,1,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i1,none), istream(C,1,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none), istream(C,1,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none), istream(C,1,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none), istream(C,1,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none), istream(C,1,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i0,i2,none), istream(C,1,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none), istream(C,1,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none), istream(C,1,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none), istream(C,1,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none), istream(C,1,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i1,none), istream(C,1,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none), istream(C,1,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none), istream(C,1,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none), istream(C,1,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none), istream(C,1,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i1,i2,none), istream(C,1,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none), istream(C,1,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none), istream(C,1,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none), istream(C,1,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none), istream(C,1,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,1,I,i2,i2,none), istream(C,1,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- not istream(C,2,I,i0,i0,none), not istream(C,2,I,i0,i1,none), not istream(C,2,I,i0,i2,none), not istream(C,2,I,i0,1,none), not istream(C,2,I,i1,i1,none), not istream(C,2,I,i1,i2,none), not istream(C,2,I,i1,1,none), not istream(C,2,I,i2,i2,none), not istream(C,2,I,i2,1,none), not istream(C,2,I,1,1,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
istream(C,2,I,i0,i0,none) :- not -istream(C,2,I,i0,i0,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i0,i0,none) :- not istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i0,i1,none) :- not -istream(C,2,I,i0,i1,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i0,i1,none) :- not istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i0,i2,none) :- not -istream(C,2,I,i0,i2,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i0,i2,none) :- not istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i0,1,none) :- not -istream(C,2,I,i0,1,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i0,1,none) :- not istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i1,i1,none) :- not -istream(C,2,I,i1,i1,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i1,i1,none) :- not istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i1,i2,none) :- not -istream(C,2,I,i1,i2,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i1,i2,none) :- not istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i1,1,none) :- not -istream(C,2,I,i1,1,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i1,1,none) :- not istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i2,i2,none) :- not -istream(C,2,I,i2,i2,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i2,i2,none) :- not istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
istream(C,2,I,i2,1,none) :- not -istream(C,2,I,i2,1,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,i2,1,none) :- not istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
istream(C,2,I,1,1,none) :- not -istream(C,2,I,1,1,none), instructionChoice(C,2,I), symmetricInstruction(I), colour(C).
-istream(C,2,I,1,1,none) :- not istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i0,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i1,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,i2,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i0,1,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i1,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,i2,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i1,1,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,i2,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,i2,1,none), istream(C,2,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,2,I,1,1,none), istream(C,2,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- not istream(C,3,I,i0,i0,none), not istream(C,3,I,i0,i1,none), not istream(C,3,I,i0,i2,none), not istream(C,3,I,i0,1,none), not istream(C,3,I,i0,2,none), not istream(C,3,I,i1,i1,none), not istream(C,3,I,i1,i2,none), not istream(C,3,I,i1,1,none), not istream(C,3,I,i1,2,none), not istream(C,3,I,i2,i2,none), not istream(C,3,I,i2,1,none), not istream(C,3,I,i2,2,none), not istream(C,3,I,1,1,none), not istream(C,3,I,1,2,none), not istream(C,3,I,2,2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
istream(C,3,I,i0,i0,none) :- not -istream(C,3,I,i0,i0,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i0,i0,none) :- not istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i0,i1,none) :- not -istream(C,3,I,i0,i1,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i0,i1,none) :- not istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i0,i2,none) :- not -istream(C,3,I,i0,i2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i0,i2,none) :- not istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i0,1,none) :- not -istream(C,3,I,i0,1,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i0,1,none) :- not istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i0,2,none) :- not -istream(C,3,I,i0,2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i0,2,none) :- not istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i1,i1,none) :- not -istream(C,3,I,i1,i1,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i1,i1,none) :- not istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i1,i2,none) :- not -istream(C,3,I,i1,i2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i1,i2,none) :- not istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i1,1,none) :- not -istream(C,3,I,i1,1,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i1,1,none) :- not istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i1,2,none) :- not -istream(C,3,I,i1,2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i1,2,none) :- not istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i2,i2,none) :- not -istream(C,3,I,i2,i2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i2,i2,none) :- not istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i2,1,none) :- not -istream(C,3,I,i2,1,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i2,1,none) :- not istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
istream(C,3,I,i2,2,none) :- not -istream(C,3,I,i2,2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,i2,2,none) :- not istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
istream(C,3,I,1,1,none) :- not -istream(C,3,I,1,1,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,1,1,none) :- not istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
istream(C,3,I,1,2,none) :- not -istream(C,3,I,1,2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,1,2,none) :- not istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
istream(C,3,I,2,2,none) :- not -istream(C,3,I,2,2,none), instructionChoice(C,3,I), symmetricInstruction(I), colour(C).
-istream(C,3,I,2,2,none) :- not istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i0,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i1,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,i2,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,1,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i0,2,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i1,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,i2,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,1,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i1,2,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,i2,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,1,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,i2,2,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,1,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,1,2,none), istream(C,3,I,2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i0,i0,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i0,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i0,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i0,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i0,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i1,i1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i1,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i1,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i2,i2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i2,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,i2,2,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,1,1,none), symmetricInstruction(I), colour(C).
 :- istream(C,3,I,2,2,none), istream(C,3,I,1,2,none), symmetricInstruction(I), colour(C).
#const last=3.
 :- -value(colour,last - 0,31).
 :- value(colour,last - 0,30).
 :- -value(colour,last - 0,29).
 :- -value(colour,last - 0,28).
 :- -value(colour,last - 0,27).
 :- -value(colour,last - 0,26).
 :- value(colour,last - 0,25).
 :- value(colour,last - 0,24).
 :- -value(colour,last - 0,23).
 :- -value(colour,last - 0,22).
 :- -value(colour,last - 0,21).
 :- value(colour,last - 0,20).
 :- value(colour,last - 0,19).
 :- -value(colour,last - 0,18).
 :- value(colour,last - 0,17).
 :- value(colour,last - 0,16).
 :- value(colour,last - 0,15).
 :- value(colour,last - 0,14).
 :- value(colour,last - 0,13).
 :- value(colour,last - 0,12).
 :- value(colour,last - 0,11).
 :- value(colour,last - 0,10).
 :- -value(colour,last - 0,9).
 :- value(colour,last - 0,8).
 :- value(colour,last - 0,7).
 :- -value(colour,last - 0,6).
 :- -value(colour,last - 0,5).
 :- value(colour,last - 0,4).
 :- -value(colour,last - 0,3).
 :- -value(colour,last - 0,2).
 :- value(colour,last - 0,1).
 :- value(colour,last - 0,0).
% ADD

%% First bit
-value(C,T,0) :- istream(C,P,add,R1,R2,none), pc(C,P,T), -value(C,R1,0), -value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

-value(C,T,0) :- istream(C,P,add,R1,R2,none), pc(C,P,T), value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

value(C,T,0) :- istream(C,P,add,R1,R2,none), pc(C,P,T), not -value(C,T,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

additionCarry(C,T,1) :-  istream(C,P,add,R1,R2,none), pc(C,P,T), value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

-additionCarry(C,T,1) :-  istream(C,P,add,R1,R2,none), pc(C,P,T), not additionCarry(C,T,1), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Subsequent bits
value(C,T,B) :- istream(C,P,add,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,add,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,add,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,add,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

-value(C,T,B) :- istream(C,P,add,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).


additionCarry(C,T,B+1) :- istream(C,P,add,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,add,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,add,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,add,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

-additionCarry(C,T,B+1) :- istream(C,P,add,R1,R2,none), pc(C,P,T), not additionCarry(C,T,B+1), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).


symmetricInstruction(add).

% ADDcc
% use isZero pseudoInstruction

%% First bit
-value(C,T,0) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), -value(C,R1,0), -value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

-value(C,T,0) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

value(C,T,0) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), not -value(C,T,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

additionCarry(C,T,1) :-  istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

-additionCarry(C,T,1) :-  istream(C,P,addcc,R1,R2,none), pc(C,P,T), not additionCarry(C,T,1), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Subsequent bits
value(C,T,B) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

-value(C,T,B) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).


additionCarry(C,T,B+1) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

-additionCarry(C,T,B+1) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), not additionCarry(C,T,B+1), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), -value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


-flagStatus(C,T,F) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,addcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).



symmetricInstruction(addcc).

% cADD

% Set the first bit as equal to the carry bit aftre the previous instruction
additionCarry(C,T,0) :-  istream(C,P,cadd,R1,R2,none), pc(C,P,T), flagStatus(C,T-1,carry), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% All bits
value(C,T,B) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

value(C,T,B) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

value(C,T,B) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

value(C,T,B) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

-value(C,T,B) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).


additionCarry(C,T,B+1) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

-additionCarry(C,T,B) :- istream(C,P,cadd,R1,R2,none), pc(C,P,T), not additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).


symmetricInstruction(cadd).

% cADDcc
% use isZero pseudoInstruction

% Set the first bit as equal to the carry bit aftre the previous instruction
additionCarry(C,T,0) :-  istream(C,P,caddcc,R1,R2,none), pc(C,P,T), flagStatus(C,T-1,carry), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% All bits
value(C,T,B) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

value(C,T,B) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

value(C,T,B) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

value(C,T,B) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

-value(C,T,B) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).


additionCarry(C,T,B+1) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

-additionCarry(C,T,B) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), not additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), register(R1), register(R2).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), -value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


-flagStatus(C,T,F) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,caddcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).



symmetricInstruction(caddcc).

% cSUB

% Set the first bit as equal to the carry bit aftre the previous instruction
subtractionBorrow(C,T,0) :-  istream(C,P,csub,R1,R2,none), pc(C,P,T), flagStatus(C,T-1,carry), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Bits
value(C,T,B) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

value(C,T,B) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

value(C,T,B) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

value(C,T,B) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).


% Borrow

subtractionBorrow(C,T,B+1) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

subtractionBorrow(C,T,B+1) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

subtractionBorrow(C,T,B+1) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

subtractionBorrow(C,T,B+1) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).


% Defaults

-value(C,T,B) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

-subtractionBorrow(C,T,B) :- istream(C,P,csub,R1,R2,none), pc(C,P,T), not subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).



asymmetricInstruction(csub).
% cSUBcc

% Set the first bit as equal to the carry bit aftre the previous instruction
subtractionBorrow(C,T,0) :-  istream(C,P,csubcc,R1,R2,none), pc(C,P,T), flagStatus(C,T-1,carry), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Bits
value(C,T,B) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

value(C,T,B) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

value(C,T,B) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

value(C,T,B) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).


% Borrow

subtractionBorrow(C,T,B+1) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

subtractionBorrow(C,T,B+1) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

subtractionBorrow(C,T,B+1) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

subtractionBorrow(C,T,B+1) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).


% Defaults

-value(C,T,B) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

-subtractionBorrow(C,T,B) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), not subtractionBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), -value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


-flagStatus(C,T,F) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,csubcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).



asymmetricInstruction(csubcc).
%% hi
%%
%% Complementary instruction to mult, allows the high bits to be extracted

value(C,T,B) :- istream(C,P,hi,R,none,none), pc(C,P,T), value(C,R,B+wordLength), register(R), colour(C), position(C,P), time(C,T), bit(B).

-value(C,T,B) :- istream(C,P,hi,R,none,none), pc(C,P,T),  not value(C,T,B), register(R), colour(C), position(C,P), time(C,T), bit(B).

% argument must be created by an instruction with hiOutput(I)
% :- istream(C,P1,hi,T2,none,none), pc(C,P1,T1), istream(C,P2,I,R1,R2,none), pc(C,P2,T2), not hiOutput(I), register(R1), register(R2), colour(C), position(C,P1), time(C,T1), position(C,P2), time(C,T2).

% 

%
%% Constraint to make sure that this is only used appropriately
%
unaryInstruction(hi).
% Not a real instruction
% Used for bnz, bz, bgez and blez on MIPS and MIPS like things
% Used for landcc, lorcc, lxorcc, addcc, caddcc, subcc, csubcc

%% Note detects any undefined register as zero
-isZero(C,R) :- value(C,R,B), bit(B), register(R), colour(C).
isZero(C,R) :- not -isZero(C,R), register(R), colour(C).
% AND
value(C,T,B) :- istream(C,P,land,R1,R2,none), pc(C,P,T),  value(C,R1,B), value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

-value(C,T,B) :- istream(C,P,land,R1,R2,none), pc(C,P,T),  not value(C,T,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

symmetricInstruction(land).


% ANDcc
% depends on isZero (pseudo instruction)

value(C,T,B) :- istream(C,P,landcc,R1,R2,none), pc(C,P,T),  value(C,R1,B), value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

-value(C,T,B) :- istream(C,P,landcc,R1,R2,none), pc(C,P,T),  not value(C,T,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).


% Set flags
flagStatus(C,T,neg) :- istream(C,P,landcc,R1,R2,none), pc(C,P,T),  value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,landcc,R1,R2,none), pc(C,P,T),  isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

-flagStatus(C,T,F) :- istream(C,P,landcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,landcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).



symmetricInstruction(landcc).


% NOT

-value(C,T,B) :- istream(C,P,lnot,R,none,none), pc(C,P,T), value(C,R,B), register(R), colour(C), position(C,P), time(C,T), bit(B).

value(C,T,B) :- istream(C,P,lnot,R,none,none), pc(C,P,T), not -value(C,T,B), register(R), colour(C), position(C,P), time(C,T), bit(B).

unaryInstruction(lnot).

% OR
-value(C,T,B) :- istream(C,P,lor,R1,R2,none), pc(C,P,T),  -value(C,R1,B), -value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

value(C,T,B) :- istream(C,P,lor,R1,R2,none), pc(C,P,T),  not -value(C,T,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

symmetricInstruction(lor).

% ORcc
% depends on isZero (pseudo instruction)

-value(C,T,B) :- istream(C,P,lorcc,R1,R2,none), pc(C,P,T),  -value(C,R1,B), -value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

value(C,T,B) :- istream(C,P,lorcc,R1,R2,none), pc(C,P,T),  not -value(C,T,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,lorcc,R1,R2,none), pc(C,P,T),  value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,lorcc,R1,R2,none), pc(C,P,T),  isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

-flagStatus(C,T,F) :- istream(C,P,lorcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,lorcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).


symmetricInstruction(lorcc).

% XOR
value(C,T,B) :- istream(C,P,lxor,R1,R2,none), pc(C,P,T),  value(C,R1,B), -value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

value(C,T,B) :- istream(C,P,lxor,R1,R2,none), pc(C,P,T),  -value(C,R1,B), value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

-value(C,T,B) :- istream(C,P,lxor,R1,R2,none), pc(C,P,T),  not value(C,T,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

symmetricInstruction(lxor).


% XORcc
% depends on isZero (pseudo instruction)
value(C,T,B) :- istream(C,P,lxorcc,R1,R2,none), pc(C,P,T),  value(C,R1,B), -value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

value(C,T,B) :- istream(C,P,lxorcc,R1,R2,none), pc(C,P,T),  -value(C,R1,B), value(C,R2,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

-value(C,T,B) :- istream(C,P,lxorcc,R1,R2,none), pc(C,P,T),  not value(C,T,B), register(R1), register(R2), colour(C), position(C,P), time(C,T), bit(B).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,lxorcc,R1,R2,none), pc(C,P,T),  value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,lxorcc,R1,R2,none), pc(C,P,T),  isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

-flagStatus(C,T,F) :- istream(C,P,lxorcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,lxorcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).


symmetricInstruction(lxorcc).


% Shift Left Zero Fill

 value(C,T,B) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+1) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+1), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+2) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+2), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+3) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+3), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+4) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+4), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+5) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+5), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+6) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+6), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+7) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+7), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+8) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+8), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+9) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+9), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+10) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+10), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+11) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+11), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+12) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+12), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+13) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+13), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+14) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+14), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+15) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+15), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+16) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+16), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+17) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+17), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+18) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+18), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+19) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+19), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+20) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+20), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+21) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+21), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+22) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+22), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+23) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+23), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+24) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+24), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+25) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+25), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+26) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+26), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+27) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+27), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+28) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+28), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+29) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+29), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+30) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+30), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B+31) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+31), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

-value(C,T,B) :- istream(C,P,slz32,R1,R2,none), pc(C,P,T), not value(C,T,B), bit(B), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

asymmetricInstruction(slz32).
%% SRS32
%% A right shift with sign fill, data dependant

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+1), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+1), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+1), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+2), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+2), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+2), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+3), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+3), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+3), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+4), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+4), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+4), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+5), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+5), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+5), position(C,P), time(C,T), register(R1), register(R2), colour(C). 




 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+6), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+6), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+6), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+7), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+7), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+7), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+8), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+8), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+8), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+9), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+9), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+9), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+10), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+10), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+10), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+11), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+11), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+11), position(C,P), time(C,T), register(R1), register(R2), colour(C). 




 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+12), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+12), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+12), position(C,P), time(C,T), register(R1), register(R2), colour(C). 




 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+13), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+13), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+13), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+14), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+14), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+14), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+15), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+15), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), not bit(B+15), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+16), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+16), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+16), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+17), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+17), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+17), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+18), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+18), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+18), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+19), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+19), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+19), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+20), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+20), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+20), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+21), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+21), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+21), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+22), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+22), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+22), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+23), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+23), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), not bit(B+23), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+24), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+24), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+24), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+25), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+25), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+25), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+26), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+26), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+26), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+27), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+27), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+27), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+28), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+28), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+28), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+29), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+29), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+29), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+30), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+30), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+30), position(C,P), time(C,T), register(R1), register(R2), colour(C). 



 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,B+31), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+31), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), value(C,R1,wordLength-1), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), not bit(B+31), position(C,P), time(C,T), register(R1), register(R2), colour(C). 




-value(C,T,B) :- istream(C,P,srs32,R1,R2,none), pc(C,P,T), not value(C,T,B), bit(B), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

asymmetricInstruction(srs32).

%% SRLV
%% A right shift with zero fill, data dependant

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+1), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+1), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+2), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+2), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+3), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+3), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+4), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+4), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+5), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+5), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+6), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+6), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+7), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), -value(C,R2,4), bit(B), bit(B+7), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+8), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+8), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+9), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+9), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+10), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+10), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+11), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+11), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+12), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+12), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+13), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+13), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+14), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+14), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+15), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), -value(C,R2,4), bit(B), bit(B+15), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+16), -value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+16), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+17), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+17), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+18), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+18), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+19), value(C,R2,0), value(C,R2,1), -value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+19), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+20), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+20), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+21), value(C,R2,0), -value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+21), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+22), -value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+22), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+23), value(C,R2,0), value(C,R2,1), value(C,R2,2), -value(C,R2,3), value(C,R2,4), bit(B), bit(B+23), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+24), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+24), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+25), value(C,R2,0), -value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+25), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+26), -value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+26), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+27), value(C,R2,0), value(C,R2,1), -value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+27), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+28), -value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+28), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+29), value(C,R2,0), -value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+29), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+30), -value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+30), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

 value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), value(C,R1,B+31), value(C,R2,0), value(C,R2,1), value(C,R2,2), value(C,R2,3), value(C,R2,4), bit(B), bit(B+31), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

-value(C,T,B) :- istream(C,P,srz32,R1,R2,none), pc(C,P,T), not value(C,T,B), bit(B), position(C,P), time(C,T), register(R1), register(R2), colour(C). 

asymmetricInstruction(srz32).

% SUB

% First bit
value(C,T,0) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), value(C,R1,0), -value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

value(C,T,0) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), -value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% First borrow
subtrationBorrow(C,T,1) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), -value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Subsequent bits
value(C,T,B) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).


% Subsequent borrow

subtrationBorrow(C,T,B+1) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).


% Defaults

-value(C,T,B) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

-subtrationBorrow(C,T,B) :- istream(C,P,sub,R1,R2,none), pc(C,P,T), not subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).



asymmetricInstruction(sub).
% SUBcc

% First bit
value(C,T,0) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), value(C,R1,0), -value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

value(C,T,0) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% First borrow
subtrationBorrow(C,T,1) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Subsequent bits
value(C,T,B) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).


% Subsequent borrow

subtrationBorrow(C,T,B+1) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).


% Defaults

-value(C,T,B) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), bit(B).

-subtrationBorrow(C,T,B) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), not subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), -value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


-flagStatus(C,T,F) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,subcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).


asymmetricInstruction(subcc).
% tADDcc
% use isZero pseudoInstruction

%% First bit
-value(C,T,0) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), -value(C,R1,0), -value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

-value(C,T,0) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

value(C,T,0) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), not -value(C,T,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

additionCarry(C,T,1) :-  istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

-additionCarry(C,T,1) :-  istream(C,P,taddcc,R1,R2,none), pc(C,P,T), not additionCarry(C,T,1), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Subsequent bits
value(C,T,B) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

value(C,T,B) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

-value(C,T,B) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).


additionCarry(C,T,B+1) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

additionCarry(C,T,B+1) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), -additionCarry(C,T,B), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

-additionCarry(C,T,B+1) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), not additionCarry(C,T,B+1), colour(C), position(C,P), time(C,T), bit(B), B != 0, register(R1), register(R2).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), -value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

% This is the only difference between this and the untagged version - some extra overflow rules

flagStatus(C,T,over) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,0), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R2,0), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R2,1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


flagStatus(C,T,carry) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


-flagStatus(C,T,F) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,taddcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).



symmetricInstruction(taddcc).

% tSUBcc

% First bit
value(C,T,0) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R1,0), -value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).

value(C,T,0) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% First borrow
subtrationBorrow(C,T,1) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,0), value(C,R2,0), colour(C), position(C,P), time(C,T), register(R1), register(R2).


% Subsequent bits
value(C,T,B) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R1,B), -value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

value(C,T,B) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).


% Subsequent borrow

subtrationBorrow(C,T,B+1) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), -subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), -value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

subtrationBorrow(C,T,B+1) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,B), value(C,R2,B), subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).


% Defaults

-value(C,T,B) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), not value(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

-subtrationBorrow(C,T,B) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), not subtrationBorrow(C,T,B), colour(C), position(C,P), time(C,T), register(R1), register(R2), B != 0, bit(B).

% Set flags
flagStatus(C,T,neg) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,T,wordLength-1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,zero) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), isZero(C,T), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R1,wordLength - 1), -value(C,R2,wordLength - 1), -value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

% This is the only difference between this and the untagged version - some extra overflow rules

flagStatus(C,T,over) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R1,0), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R1,1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R2,0), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,over) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R2,1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


flagStatus(C,T,carry) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,R2,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), -value(C,R1,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).

flagStatus(C,T,carry) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), value(C,R2,wordLength - 1), value(C,T,wordLength - 1), register(R1), register(R2), colour(C), position(C,P), time(C,T).


-flagStatus(C,T,F) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T),  not flagStatus(C,T,F), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).

flagChanged(C,T,F) :- istream(C,P,tsubcc,R1,R2,none), pc(C,P,T), register(R1), register(R2), colour(C), position(C,P), time(C,T), flag(F).


asymmetricInstruction(tsubcc).
instruction(I) :- noArgInstruction(I).
instruction(I) :- unaryInstruction(I).
instruction(I) :- symmetricInstruction(I).
instruction(I) :- asymmetricInstruction(I).
