Is it possible to simplify (a+b)xor(c+b)? What is the contribution of b to the final result? Note that I'm mixing boolean algebra with arithmetic, xor is a bitwise exclusive or on corresponding bits and + is a standard addition on 8 bits, that wraps around when overflown. a, b, c are unsigned char;
Asked
Active
Viewed 1.8k times
6
-
1Unlikely, since XOR is purely bitwise, whereas addition affects adjacent bits. – Paul R Mar 05 '14 at 15:51
2 Answers
5
We can use an SMT solver to test our hypothesis that your formula can be simplified. You can head over to http://rise4fun.com:
x = BitVec('x', 8)
y = BitVec('y', 8)
z = BitVec('z', 8)
print simplify((x + z) ^ (y + z))
and the result, anticlimactically, is:
x + z ^ y + z
Which means your formula cannot be further simplified.

Michael Foukarakis
- 39,737
- 6
- 87
- 123
-
-
1This result does not make sense `x + z ^ y + z` . Original sum is symmetrical around `x` and `y`, whereas a result is not. – Salvador Dali May 31 '16 at 07:32
-
@SalvadorDali: It does make sense if you consider Python operator precedence, which Z3 uses: https://docs.python.org/3/reference/expressions.html#index-77 – Michael Foukarakis May 31 '16 at 08:17