:: {N:n, n:n?, B:b, b:b?, s:s, o:o, g:g, X:n, Y:n, Z:n, r8:r8, r4:r4, i:i, i8:i8, i4:i4, i2:i2, i1:i1, u8:u8, u4:u4, u2:u2, u1:u1}

false or false
false or true
false or null
true or false
true or true
true or null
null or false
null or true
null or null

false and false
false and true
false and null
true and false
true and true
true and null
null and false
null and true
null and null

false xor false
false xor true
false xor null
true xor false
true xor true
true xor null
null xor false
null xor true
null xor null

B or false
B or true
B or null
false or B
true or B
null or B

N or false
N or true
N or null
false or N
true or N
null or N

B and false
B and true
B and null
false and B
true and B
null and B

N and false
N and true
N and null
false and N
true and N
null and N

B xor false
B xor true
B xor null
false xor B
true xor B
null xor B

N xor false
N xor true
N xor null
false xor N
true xor N
null xor N

b or false
b or true
b or null
false or b
true or b
null or b

b and false
b and true
b and null
false and b
true and b
null and b

b xor false
b xor true
b xor null
false xor b
true xor b
null xor b

B or false or b
B or true or b
B or null or b
false or B or b
true or B or b
null or B or b

B and false and b
B and true and b
B and null and b
false and B and b
true and B and b
null and B and b

B xor false xor b
B xor true xor b
B xor null xor b
false xor B xor b
true xor B xor b
null xor B xor b

B or b or false
B or b or true
B or b or null
false or b or B
true or b or B
null or b or B

B and b and false
B and b and true
B and b and null
false and b and B
true and b and B
null and b and B

B xor b xor false
B xor b xor true
B xor b xor null
false xor b xor B
true xor b xor B
null xor b xor B

(B or null) or (N or null)
(B or null) or (N or true)
(B or null) or (N or false)

(B and null) and (N and null)
(B and null) and (N and true)
(B and null) and (N and false)

Opt(false) or false
B or Opt(false)

b or null or false
null or b or false

// *** Lifting
:: {N:n*, n:n?*, B:b*, b:b?*, s:s*, o:o*, g:g*, X:n*, Y:n*, Z:n*, r8:r8*, r4:r4*, i:i*, i8:i8*, i4:i4*, i2:i2*, i1:i1*, u8:u8*, u4:u4*, u2:u2*, u1:u1*}

B or false
B or true
B or null
false or B
true or B
null or B

B and false
B and true
B and null
false and B
true and B
null and B

b or false
b or true
b or null
false or b
true or b
null or b

b and false
b and true
b and null
false and b
true and b
null and b

B or false or b
B or true or b
B or null or b
false or B or b
true or B or b
null or B or b

B and false and b
B and true and b
B and null and b
false and B and b
true and B and b
null and B and b

B or b or false
B or b or true
B or b or null
false or b or B
true or b or B
null or b or B

B and b and false
B and b and true
B and b and null
false and b and B
true and b and B
null and b and B
