# Exotic Logics

Wed Jun 17 19:20:51 CEST 2009

```On Jun 17, 10:04 am, Aaron Brady <castiro... at gmail.com> wrote:
snip
> You (OP) may be interested in the definitions of the fuzzy operators:
>
> and( x, y ) := min( x, y )
> or( x, y ) := max( x, y )
> not( x ) := 1 (one)- x
> nand( x, y ) := not( and( x, y ) ) = 1- min( x, y )
>
> Defining 'xor' as '( x or y ) and ( not( x and y ) )', we have:
>
> xor( x, y ) := min( max( x, y ), 1- min( x, y ) )
>
> However, defining 'xor' as '( x and not y ) or ( y and not x )', we
> don't have:
>
> xor( x, y ) := max( min( x, 1- y ), min( y, 1-x ) )

Corollary:

xor1( x, y ) === xor2( x, y ).

Non-exhaustive demonstration, excerpt:

>>> def xor1( x, y ):
...     return min( max( x, y ), 1- min( x, y ) )
...
>>> def xor2( x, y ):
...     return max( min( x, 1- y ), min( y, 1- x ) )
...
>>> for i in range( 0, 11, 2 ):
...     for j in range( 0, 11, 2 ):
...             print i, j, xor2( x, y )*10, '  ',
...     print

0 0 0.0    0 2 2.0    0 4 4.0    0 6 6.0    0 8 8.0
2 0 2.0    2 2 2.0    2 4 4.0    2 6 6.0    2 8 8.0
4 0 4.0    4 2 4.0    4 4 4.0    4 6 6.0    4 8 6.0
6 0 6.0    6 2 6.0    6 4 6.0    6 6 4.0    6 8 4.0
8 0 8.0    8 2 8.0    8 4 6.0    8 6 4.0    8 8 2.0
10 0 10.0  10 2 8.0   10 4 6.0   10 6 4.0   10 8 2.0

They appear to be equal.

I forgot to mention, fuzzy values take on values from the continuous
open or closed range 0 to 1.

```