       Re: Boolean algebra

• To: mathgroup at smc.vnet.net
• Subject: [mg69384] Re: [mg69373] Boolean algebra
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Sun, 10 Sep 2006 07:19:50 -0400 (EDT)

```On 9 Sep 2006, at 16:26, Menace wrote:

> I'd like to solve the following problem in Mathematica,
>
> Given are the following preliminaries:
> (a1 || a2)=True
> (a1 && a2) = False
>
> Then, given the following conjunctive normal form:
>
> (b1 || a1) && (b1 || a2)
>
> This can be simpliefied to: b1 || (a1 && a2)
>
> Given the prelininaries I'd like Mathematica to simplify this to: b1.
> However, I cant figure out how to do this. I tried the following:
>
> prelims := {(a1 && a2) -> False, (a1 || a2) -> True};
> f1 := (b1 || a2) && (b1 || a1);
> Simplify[f1] /. prelims
>
> and this seems to work. However
>
> f2 := (b1 || a1 || c1) && (b2 || a2 || a1);
> Simplify[f2] /. prelims
>
> evaluates to: (b1 || a1 || c1) && (b2 || a2 || a1) instead of b1 || a1
> || c1.
> The reason of this seems to be the order in which a2 and a1 occur in
> f2. How can I make sure it works regardless of the order of a1 and a2?
>

I seems to me that in general it will be pretty hard to use
Mathematica for this sort of Boolean algebra without some AddOn
assumptions amount simply to one assumption:

In:=
a2 = Not[a1];

Now we have:

In:=
Simplify[ (b1 || a2) && (b1 || a1)]

Out=
b1

In:=
Simplify[(b1||a1||c1)&&(b2||a2||a1)]

Out=
a1||b1||c1

Andrzej Kozlowski
Tokyo, Japan

```

• Prev by Date: Re: Boolean algebra
• Next by Date: Why does Mathematica change the precision of an expression to check equality?
• Previous by thread: Re: Boolean algebra
• Next by thread: Re: Boolean algebra