[SMT-LIB] Multiarity XOR, IFF
Grundy, Jim D
jim.d.grundy at intel.com
Wed Nov 7 12:36:02 EST 2007
Well - I'm not a huge fan of the multiarity operators, but at the end of
the day
it doesn't really matter, so long as the standard makes clear what they
mean, and
it does (had I bothered to read the right part of it).
I think we figured (iff a b c) was being allowed because it can save
significant space
in the input over (iff a b) and (iff b c) when b is large - but you can
always get
around than by using a let expression.
I would say that if you were going to alow multiarity iff to mean a
conjunction of iffs then if would make as much sence to allow multiarity
= meaning a conjunction of =s, which the standard doesn't currently
allow.
One can debate about what the standard should have been, but since it is
reasonable the way it is I don't see a compelling case for change.
All the best
Jim
-----Original Message-----
From: smt-lib-bounces at cs.nyu.edu [mailto:smt-lib-bounces at cs.nyu.edu] On
Behalf Of Sava Krstic
Sent: Wednesday, November 07, 2007 9:18 AM
To: Clark Barrett
Cc: smt-lib at cs.nyu.edu
Subject: Re: [SMT-LIB] Multiarity XOR, IFF
XOR is addition modulo two. The set {0,1} has the algebraic structure of
a _field_, where XOR is the addition and AND is the multiplication. This
pair of operations satisfies all algebraic laws that PLUS and TIMES of
rationals (or reals) satisfy. Multiarity XOR is commonly seen in
cryptography (check, for example, "secret sharing" on wikipedia) and
certainly at other places in computer science, so I would suggest that
SMT-LIB allow it.
The IFF seems problematic. Algebraically, it's just as "good" as
XOR---these are the only abelian group operations on {0,1}---but has
anyone ever seen expressions like "IFF a b c" or "a IFF b IFF c" to mean
"(a IFF b) IFF c"? On the other hand, chains like "a IFF b IFF c" are
commonly seen with the meaning that a, b, c are all equivalent, in
complete analogy with expressions chains like "a = b = c". I would
suggest that multiarity IFF either be disallowed, or allowed (together
with multiarity equality!) with the "all equal" meaning.
Sava
Clark Barrett wrote:
>>>(Personally,
>>>I'm not sure it really makes sense to have multiarity xor and iff at
>>>all).
>>>
>>
>>Why not? Would you then say that it does not make sense to have
>>multiarity AND and OR connectives either? If not, what would be the
>>difference? The current standard treats them all the same by virtue
>>of their associativity.
>
>
> I have no problem with multiarity AND and OR. These come up in real
> applications and are (I believe) well-understood. The reason I am
less
> comfortable with multiarity XOR and IFF is that I've never seen them
come
> up in practice and (as evidenced by this discussion) I believe there
is little
> or no intuition behind their current meanings.
>
> That said, I think that changing the semantics would be even more
confusing: if
> (iff a b c) really means (and (iff a b) (iff b c)) then I'd rather see
it
> spelled out than hidden behind a multiarity iff.
>
> To summarize, here is what I would suggest (in order of preference):
>
> 1. Restrict XOR and IFF to be binary operators
> 2. Leave the semantics as they are but add some clarification in the
standard
> 3. Change the semantics
>
> -Clark
> _______________________________________________
> SMT-LIB mailing list
> SMT-LIB at cs.nyu.edu
> http://www.cs.nyu.edu/mailman/listinfo/smt-lib
>
_______________________________________________
SMT-LIB mailing list
SMT-LIB at cs.nyu.edu
http://www.cs.nyu.edu/mailman/listinfo/smt-lib
More information about the SMT-LIB
mailing list