Re: Can't Simplify logical expression

• To: mathgroup at smc.vnet.net
• Subject: [mg90822] Re: Can't Simplify logical expression
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Fri, 25 Jul 2008 06:16:26 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <g69ftk\$ig9\$1@smc.vnet.net>

```realyigo at gmail.com wrote:

> Simplify[(a && (! b)) || (b && (! a))]
>
> I get this:
> a && ! b || b && ! a
>
> But I want this:
> Xor[a,b]
>
>
> Any suggestions?

First, a couple of general remarks. Functions such as FullSimplify[] and
LogicalExpand[] are more appropriate than Simplify[] when dealing with
logical expressions. Also, it is better to use Implies[] rather than
Equal[]. For instance,

FullSimplify[(a && (! b)) || (b && (! a)) == Xor[a, b]]

(a && ! b) || (b && ! a) == (a \[Xor] b)

Implies[(a && (! b)) || (b && (! a)), Xor[a, b]] // FullSimplify

True

LogicalExpand[(a && (! b)) || (b && (! a))] ==
LogicalExpand[ Xor[a, b]]

True

Back to your original query, though Mathematica can easily go from Xor[]
to its expanded form

LogicalExpand[ Xor[a, b]]

(a && ! b) || (b && ! a)

the reverse operation might be much more challenging for a variety of
reasons.

The thread titled, "((a&&b)||c)==((a||c)&&(b||c))", (started on
Wednesday, 9 Nov 2005), is a must read on this subject. If you do not
want to read all the posts, at least be sure to read Daniel Lichtblau's

Regards,
-- Jean-Marc

```

• Prev by Date: Re: Function Programming Problems
• Next by Date: Re: Function Programming Problems
• Previous by thread: Re: Can't Simplify logical expression
• Next by thread: A suggestion fo web-hosting of 3-D images