Re: Evaluation of boolean functions in Mathematica 8
- To: mathgroup at smc.vnet.net
- Subject: [mg127577] Re: Evaluation of boolean functions in Mathematica 8
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Sat, 4 Aug 2012 21:48:55 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <20120804095946.36173683D@smc.vnet.net>
Re your side note, use FullForm
Clear[truthTable]
truthTable[equ_, form_: TraditionalForm] :=
Module[{v = Flatten[
{Union[BooleanVariables[equ]], equ}]},
Grid[Join[
{Style[form[#], Bold] & /@ v},
BooleanTable[v]],
Frame -> All,
FrameStyle -> LightGray]]
equ = Riffle @@ (# @@@ Subsets[{p, q, r}, {2, 3}] & /@
{Or, And});
abbrev = {True -> Style["T", Blue, Bold],
False -> Style["F", Gray]};
truthTable[equ] /. abbrev
truthTable[equ, StandardForm] /. abbrev
truthTable[equ, FullForm] /. abbrev
Change default form to taste.
Bob Hanlon
On Sat, Aug 4, 2012 at 5:59 AM, Dana DeLouis <dana2010 at me.com> wrote:
>> g[True,True,True]
>> But the above statement does not evaluate g at the data-point given,...
>
> Hi. Just some additional ideas. Here's what you have:
>
> equ=And[p,q,r]
>
> f=BooleanConvert[equ,"BFF"]
> BooleanFunction[<3>][p,q,r]
>
> Notice that the equation has p,q,r assigned to it.
> Therefore, just assign a value to the variables.
>
> f//FullForm
> BooleanFunction[Rule["BDD",List[3,0,2,-1,1,3,-1,2,1,-1]]][p,q,r]
>
> f/.{p->True,q->True,r->False}
> False
>
>
> Slightly better might be:
>
> BooleanTable[f,{p,q,r}]
> {True,False,False,False,False,False,False,False}
>
>
> As a side note, notice that using x,y,z will not work as the function is expecting p,q,r.
>
> BooleanTable[f,{x,y,z}]
> < does not work >
>
>
> Using your equation, we see that there is only 1 output with True, and the rest are False.
> What generated the True condition? All False, All True, or something in-between?
> Here's a general idea you may find interesting.
> I've includes "steps" so as to see intermediate steps one may want to look at leading up to the final solution.
>
>
> TruthTable[equ_,steps_List:{}]:=Module[{v},
> v = BooleanVariables[equ];
> AppendTo[v,{steps,equ}];
> v=Flatten[v];
>
> MatrixForm[BooleanTable[v],
> TableHeadings->{Automatic,v}]
> ]
>
>
> Here's your example. It appears the output is true when all inputs are true.
> (I know... this example was easy)
>
>
> TruthTable[equ]
> ( p q r p&&q&&r
> 1 True True True True
> 2 True True False False
> 3 True False True False
> 4 True False False False
> 5 False True True False
> 6 False True False False
> 7 False False True False
> 8 False False False False
> )
>
>
> This example is also easy, but suppose one didn't know the intermediate steps.
> If one didn't know what the final NOT did, you could look at the inside part prior to the final NOT.
>
>
> equ=Not[Or[And[x,y],z]];
>
> // additional things one may want to look at:
>
> steps = {And[x,y], Or[And[x,y],z]};
>
> TruthTable[equ,steps]
> ( x y z x&&y (x&&y)||z !((x&&y)||z)
> 1 True True True True True False
> 2 True True False True True False
>
> etc...
> )
>
>
> As a side note, does anyone know of a simple way to keep the input equation as And[p,q,r] ?
>
> This gets simplified to p&&q&&r.
> I've been trying to find a way (without typing it as string) to keep the original version of And[p,q,r] in the heading row.
> ~Thanks.
>
>
> = = = = = = = = = =
> HTH :>)
> Dana DeLouis
> Mac & Math 8
> = = = = = = = = = =
>
>
>
> On Aug 1, 4:57 am, lalwani.ak... at gmail.com wrote:
>> Hello,
>>
>> I want to evaluate a Boolean function by substituting True and False values for its variables, to get a True or False value at the output. Example,
>>
>> g = BooleanConvert[And[p, q, r], "BFF"]
>>
>> g[True,True,True]
>>
>> But the above statement does not evaluate g at the data-point given, but instead returns the statement,
>>
>> BooleanFunction[<3>][p,q,r][True,True,True]
>>
>> Can anybody please suggest how to proceed?
>>
>> Thanks a lot.
- References:
- Re: Evaluation of boolean functions in Mathematica 8
- From: Dana DeLouis <dana2010@me.com>
- Re: Evaluation of boolean functions in Mathematica 8