236 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			236 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								% Simple examples for boolean handler
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								[eclipse 6]: and(X,Y,Z),(X=1;X=0;X=Y).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Z = Var_m333
							 | 
						||
| 
								 | 
							
								X = 1
							 | 
						||
| 
								 | 
							
								Y = Var_m333
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(3) boolean(Var_m333)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Z = 0
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								Y = Var_m333
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(3) boolean(Var_m333)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								Z = _m309
							 | 
						||
| 
								 | 
							
								X = _m309
							 | 
						||
| 
								 | 
							
								Y = _m309
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(3) boolean(_m309)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								yes.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% alternative formulations
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								nand1(X1,Y1,Z):- and(X,Y,Z),neg(X1,X),neg(Y1,Y).
							 | 
						||
| 
								 | 
							
								nand2(X1,Y1,Z):- or(X1,Y1,Z1),neg(Z1,Z).
							 | 
						||
| 
								 | 
							
								test_nand(X,Y,Z1,Z2):- nand1(X,Y,Z1),nand2(X,Y,Z2),neg(Z1,Z2).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								or1(X,Y,Z):- nand1(X,Y,Z1),neg(Z1,Z).
							 | 
						||
| 
								 | 
							
								or2(X,Y,Z):- nand2(X,Y,Z1),neg(Z1,Z).
							 | 
						||
| 
								 | 
							
								or3(A,B,C):- xor(A,B,D),and(A,B,E),xor(D,E,C).
							 | 
						||
| 
								 | 
							
								test_or(A,B,C,D):- (or1(A,B,C);or2(A,B,C);or3(A,B,C)),or(A,B,D),neg(C,D).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								xor1(A,B,C):- or(A,B,C1), and(A,B,C2), neg(C2,C3), and(C1,C3,C).
							 | 
						||
| 
								 | 
							
								test_xor(A,B,C,D):- xor1(A,B,C),xor(A,B,D),neg(C,D).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								and1(A,B,C):- neg(A,AN),neg(B,BN),or(AN,BN,CN),neg(CN,C).
							 | 
						||
| 
								 | 
							
								test_and(A,B,C,D):-  and1(A,B,C),and(A,B,D),neg(C,D).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test(X,Y,Z):-  and(X,Y,Z),or(X,Y,Z),neg(X,Z).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% full-adder circuit boolean algebra example sept 1991, nov 1993
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								add(I1,I2,I3,O1,O2):-
							 | 
						||
| 
								 | 
							
									xor(I1,I2,X1),
							 | 
						||
| 
								 | 
							
									and(I1,I2,A1),
							 | 
						||
| 
								 | 
							
									xor(I3,X1,O1),
							 | 
						||
| 
								 | 
							
									and(I3,X1,A2),
							 | 
						||
| 
								 | 
							
									or(A1,A2,O2).
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								add(L1,L2,L3):- add(L1,L2,L3,0).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								add([],[],[C],C).
							 | 
						||
| 
								 | 
							
								add([X|L1],[Y|L2],[Z|L3],C):-
							 | 
						||
| 
								 | 
							
									add(X,Y,C,Z,C1),
							 | 
						||
| 
								 | 
							
									add(L1,L2,L3,C1).
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								add(L1,L2,[C|L3]):- add(L1,L2,L3,C).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								add([],[],[],0).
							 | 
						||
| 
								 | 
							
								add([X|L1],[Y|L2],[Z|L3],C):-
							 | 
						||
| 
								 | 
							
									add(L1,L2,L3,C1),
							 | 
						||
| 
								 | 
							
									add(X,Y,C1,Z,C).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								[eclipse 56]: add(L,L,R).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								L = []
							 | 
						||
| 
								 | 
							
								R = [0]     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								L = [_g71]
							 | 
						||
| 
								 | 
							
								R = [_g71, 0]     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								L = [_g71, _g79]
							 | 
						||
| 
								 | 
							
								R = [_g71, _g79, 0]     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								L = [_g71, _g79, _g87]
							 | 
						||
| 
								 | 
							
								R = [_g71, _g79, _g87, 0]     More? (;) 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								L = [_g71, _g79, _g87, _g95]
							 | 
						||
| 
								 | 
							
								R = [_g71, _g79, _g87, _g95, 0]     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[eclipse 59]: add([X,X,X],[Y,Y,Y],R), (X=1;X=0;X=Y;neg(X,Y)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [_m5677, Var_m4777, Var_m2407, Var_m419]
							 | 
						||
| 
								 | 
							
								X = 1
							 | 
						||
| 
								 | 
							
								Y = Var_m395
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(39) boolean(_m5251)
							 | 
						||
| 
								 | 
							
								(33) boolean(Var_m1499)
							 | 
						||
| 
								 | 
							
								(19) and(Var_m395, Var_m1499, 0)
							 | 
						||
| 
								 | 
							
								(31) xor(Var_m395, Var_m1499, Var_m4777)
							 | 
						||
| 
								 | 
							
								(34) and(Var_m395, Var_m1499, _m5251)
							 | 
						||
| 
								 | 
							
								(16) xor(Var_m395, Var_m1499, Var_m2407)
							 | 
						||
| 
								 | 
							
								(43) neg(Var_m395, Var_m419)
							 | 
						||
| 
								 | 
							
								(38) boolean(Var_m395)
							 | 
						||
| 
								 | 
							
								(37) or(Var_m395, _m5251, _m5677)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, Var_m395, Var_m395, Var_m395]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								Y = Var_m395
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(33) boolean(Var_m395)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [_m371, _m371, _m371, 0]
							 | 
						||
| 
								 | 
							
								X = _m371
							 | 
						||
| 
								 | 
							
								Y = _m371
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(3) boolean(_m371)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [_m5251, Var_m4777, Var_m2407, Var_m419]
							 | 
						||
| 
								 | 
							
								X = _m371
							 | 
						||
| 
								 | 
							
								Y = Var_m395
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(1) xor(_m371, Var_m395, Var_m419)
							 | 
						||
| 
								 | 
							
								(2) boolean(_m371)
							 | 
						||
| 
								 | 
							
								(3) boolean(Var_m395)
							 | 
						||
| 
								 | 
							
								(4) and(_m371, Var_m395, _m877)
							 | 
						||
| 
								 | 
							
								(10) xor(_m371, Var_m395, Var_m1499)
							 | 
						||
| 
								 | 
							
								(13) and(_m371, Var_m395, _m1973)
							 | 
						||
| 
								 | 
							
								(16) xor(_m877, Var_m1499, Var_m2407)
							 | 
						||
| 
								 | 
							
								(17) boolean(_m877)
							 | 
						||
| 
								 | 
							
								(18) boolean(Var_m1499)
							 | 
						||
| 
								 | 
							
								(19) and(_m877, Var_m1499, _m2881)
							 | 
						||
| 
								 | 
							
								(22) or(_m1973, _m2881, _m3307)
							 | 
						||
| 
								 | 
							
								(23) boolean(_m1973)
							 | 
						||
| 
								 | 
							
								(24) boolean(_m2881)
							 | 
						||
| 
								 | 
							
								(25) xor(_m371, Var_m395, Var_m3773)
							 | 
						||
| 
								 | 
							
								(31) xor(_m3307, Var_m3773, Var_m4777)
							 | 
						||
| 
								 | 
							
								(32) boolean(_m3307)
							 | 
						||
| 
								 | 
							
								(33) boolean(Var_m3773)
							 | 
						||
| 
								 | 
							
								(39) boolean(_m5251)
							 | 
						||
| 
								 | 
							
								(34) and(_m3307, Var_m3773, _m5251)
							 | 
						||
| 
								 | 
							
								(28) and(_m371, Var_m395, 0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								yes.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[eclipse 60]:  add([X,X,X],[Y,Y,Y],R), (X=1;X=0;X=Y;neg(X,Y)), labeling.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 0, 0, 1]
							 | 
						||
| 
								 | 
							
								X = 1
							 | 
						||
| 
								 | 
							
								Y = 0     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [1, 1, 1, 0]
							 | 
						||
| 
								 | 
							
								X = 1
							 | 
						||
| 
								 | 
							
								Y = 1     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 1, 1, 1]
							 | 
						||
| 
								 | 
							
								X = 1
							 | 
						||
| 
								 | 
							
								Y = 0     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 0, 0, 0]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								Y = 0     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 1, 1, 1]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								Y = 1     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 0, 0, 0]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								Y = 0     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [1, 1, 1, 0]
							 | 
						||
| 
								 | 
							
								X = 1
							 | 
						||
| 
								 | 
							
								Y = 1     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 0, 0, 0]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								Y = 0     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 1, 1, 1]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								Y = 1     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 1, 1, 1]
							 | 
						||
| 
								 | 
							
								X = 1
							 | 
						||
| 
								 | 
							
								Y = 0
							 | 
						||
| 
								 | 
							
								yes.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[eclipse 66]: add(L,R,[X|L]).
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								R = []
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								L = []     More? (;) 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								R = [0]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								L = [_m295]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(2) boolean(_m295)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 0]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								L = [_m1785, _m303]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(11) boolean(_m303)
							 | 
						||
| 
								 | 
							
								(20) boolean(_m1785)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								R = [0, 0, 0]
							 | 
						||
| 
								 | 
							
								X = 0
							 | 
						||
| 
								 | 
							
								L = [_m3275, _m1793, _m311]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Constraints:
							 | 
						||
| 
								 | 
							
								(29) boolean(_m311)
							 | 
						||
| 
								 | 
							
								(38) boolean(_m1793)
							 | 
						||
| 
								 | 
							
								(47) boolean(_m3275)
							 | 
						||
| 
								 | 
							
								     More? (;) 
							 | 
						||
| 
								 | 
							
								yes.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*/
							 |