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. | ||
|  | 
 | ||
|  | */ |