Q:

Solving Boolean equations

@Artes suggested this code to me to solve this system of equations:
'x[a_, b_] := Boole[a >= b] 
y[a_, c_] := Boole[a >= c]
z[b_, c_] := Boole[b >= c]
Solve[ a == x[a, b] + y[a, c] && b == x[a, b] + z[b, c] && 
       c == y[a, c] + z[b, c], {a, b, c}]'

What's the fastest way to get to the solution of x[a_, b_], which should be a parameter now.
A problem which arised while coding the above was, that this code
 H[1, x_, y_] := 1 /; 10 - x - y >= p[B2] - y && 10 - x - y >= 0
H[1, x_, y_] := 1 /; 6 - x > p[B2] - y && 6 - x >= 0
H[1, x_, y_] := 0.5 /; 4 - x == p[B2] - y && 4 - x >= 0
H[1, x_, y_] := 0 /; others

doesn't work for me. 
P[q_, w_] := 1 /; q > w  
P[q_, w_] := 0 /; others  
P[q_, w_] := 0.5 /; q == w 

This code on the other hand works fine. So i suppose that "others" in the case of multiple conditions doesn't work any longer. Is there a solution?

A:

Let's define the following functions:
x[a_, b_] := Boole[a >= b] 
y[a_, c_] := Boole[a >= c]
z[b_, c_] := Boole[b >= c]

In fact we need only one function but for clarity of dealing with variables we have used three definitions, 
then we rewrite the given system 
Solve[ a == x[a, b] + y[a, c] && b == x[a, b] + z[b, c] && 
       c == y[a, c] + z[b, c], {a, b, c}]

{{a -> 0, b -> 1, c -> 1}, {a -> 2, b -> 2, c -> 2}}

alternatively
Reduce[ a == x[a, b] + y[a, c] && b == x[a, b] + z[b, c] && 
        c == y[a, c] + z[b, c], {a, b, c}]

(a == 0 && b == 1 && c == 1) || (a == 2 && b == 2 && c == 2)

