MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

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  
package. However, your particular cases are very easy. Note that your  
assumptions amount simply to one assumption:

In[1]:=
a2 = Not[a1];

Now we have:

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

Out[2]=
b1


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

Out[3]=
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