roubeur

5 Reputation

One Badge

7 years, 271 days

MaplePrimes Activity


These are replies submitted by roubeur

@vv Thank you for your answer, 

it is working now for me.

I'm just wondering how an I examine the result.

There is a section with the equations: simp:=BooleanSimplify(fex(xx[]));

(((((((((((((((((((x10 &and x17) &and x5) &and x6) &and &not(x11)) &and &not(x12)) &and &not(x20)) &and &not(x21)) &and &not(x23)) &and &not(x24)) &or
(((((((((x10 &and x17) &and x5) &and x7) &and &not(x11)) &and &not(x12)) &and &not(x20)) &and &not(x21)) &and &not(x23)) &and &not(x24))) &or
(((((((((x10 &and x17) &and x6) &and &not(x11)) &and &not(x12)) &and &not(x20)) &and &not(x21)) &and &not(x22)) &and &not(x23)) &and &not(x24))) &or
(((((((((x10 &and x17) &and x7) &and &not(x11)) &and &not(x12)) &and &not(x20)) &and &not(x21)) &and &not(x22)) &and &not(x23)) &and &not(x24))) &or

etc...

And there is this section: 

[x1 = true, x2 = true, x3 = false, x4 = false, x5 = x5, x6 = x6, x7 = x7, x8 = x8, x9 = x9, x10 = x10, x11 = x11, x12 = x12, x13 = x13, x14 = x14, x15 = x15, x16 = x16, x17 = x17, x18 = x18, x19 = x19, x20 = x20, x21 = x21, x22 = x22, x23 = x23, x24 = x24, x25 = x25,

x26 = false, x27 = false, x28 = true, x29 = false, x30 = false, x31 = false, x32 = true, x33 = false, x34 = true, x35 = true, x36 = false, x37 = true, x38 = true, x39 = false, x40 = true, x41 = false, x42 = false, x43 = false]

and i'm pretty sure that the last one is a part of the informations i have to considerate, due to the X1 = true ; X2 = True which are two layer that actually have to be display as a result, however they are not displayed in the first quoted result of this post ( simp:=BooleanSimplify(fex(xx[])); ).

So i am assuming that some layer are always true ( or false, like X1 or X29), and others has to be determined with the equations. So what does X5= X5 means ( X6 = X6 etc ...) how do i have to understand that ? Does that means that exerything that is not speceficly described as "true" or "false" has to be determined through the equations ?

Thank you for your help

Hello @vv ,

i tried to re-use the set of comand you gave me, with a slightly simplier equation.

I now have only 43 variables. so i only changed this line from your commands:

xxx:=[seq( tf[r()], i=1..43)]:

But it appear that i'm blocked in or at the end of the "for" loop : 

> with(Logic):
#BooleanSimplify(ex);
> tf:=[true,false]:
> r:=rand(1..2):
> fex:=unapply(ex,varsx):
> for k to 100000 do   # find an x for which ex=true
> xxx:=[seq( tf[r()], i=1..43)]:
> fex(xxx[]);
> simp:=BooleanSimplify(%):
> if(BooleanSimplify(%)) then print([k]); break fi; #fi = endif
> od: #od = endfor
memory used=4.3MB, alloc=8.3MB, time=0.16
memory used=7.8MB, alloc=8.3MB, time=0.22
memory used=11.3MB, alloc=8.3MB, time=0.29
memory used=15.0MB, alloc=8.3MB, time=0.36

Do you have any idea why ? 

Best regards,

@_Maxim_ 

it seems that your reply seems to be close to what @vv 2840, proposed.

Isn't it ?

@vv 

Hello, thank you for your answer.
Your solution seems to give me an equation i can work on.

As i am a newbie with maple, I am currently analyzing the different commands you gave me.
I noticed that you replaced my initials variables, by different variables that you called xi (i: 1 -> 46 ).

> 	vars:=[indets(ee,name)[]]:
> 	varsx:=[seq(x||n,n=1..nops(vars))];

Did those commands summarize all my variable and replace them by alphabetical order (A to Z -> x1 to x46) ? (and not by the order of their appear ?)

I would like to know if it's possible, in the end of the set of commands you gave me, to do the inversed process ?

Moreover, it seems that when I re-use the set of commands you gave me, the last result i should have is not exactly the same as you, i have some extra parenthesis ( which are actualy useless as it's a set of "and" operator, and so some of the parenthesis can be deleted)

(((((x12 &and x19) &and x7) &and x8) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x22)) &and &not(x23)) &and &not(x25)) &and &not(x5))&and &not(x6)) &or
(((((((((((x12 &and x19) &and x7) &and x9) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x22)) &and &not(x23)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or
(((((((((((x12 &and x19) &and x8) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x22)) &and &not(x23)) &and &not(x24)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or 
(((((((((((x12 &and x19) &and x9) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x22)) &and &not(x23)) &and &not(x24)) &and &not(x25)) &and&not(x5)) &and &not(x6))) &or 
(((((((((((x12 &and x7) &and x8) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x20)) &and &not(x22)) &and &not(x23)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or
(((((((((((x12 &and x7) &and x8) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x21)) &and &not(x22)) &and &not(x23)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or 
(((((((((((x12 &and x7) &and x9) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x20)) &and &not(x22)) &and &not(x23)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or 
(((((((((((x12 &and x7) &and x9) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x21)) &and &not(x22)) &and &not(x23)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or 
(((((((((((x12 &and x8) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x20)) &and &not(x22)) &and &not(x23)) &and &not(x24)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or 
(((((((((((x12 &and x8) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x21)) &and &not(x22)) &and &not(x23)) &and &not(x24)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or
(((((((((((x12 &and x9) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x20)) &and &not(x22)) &and &not(x23)) &and &not(x24)) &and &not(x25)) &and &not(x5)) &and &not(x6))) &or
(((((((((((x12 &and x9) &and &not(x10)) &and &not(x13)) &and &not(x14)) &and &not(x21)) &and &not(x22)) &and &not(x23)) &and &not(x24)) &and &not(x25)) &and &not(x5)) &and &not(x6))

If i delete them manualy, it seems that i have the same result as you.

Do you know why there is this slight delta between your result and mine ?

@_Maxim_ 

Thank you for your answer.

You said: 

Unless I'm missing something, your original expression is not a single conjunction of literals:

What do you mean by "single conjunction of literals" ? Do you mean that it is not something that looks like :

A and B and not(C) and D and not (E) etc.

If you are talking about that, indeed it's not a single conjunction of literals. But they are suposed to be simplified easily.

For example you have a "or" operation between "DCOdg" and "DCO msk", in fact they are concidered as the same layer which is called: DCO.

If not i'm sorry i don't understand well what you meant.

Plus, you wrote :

BooleanSimplify(subs({BULK = true, DCOng = false, EMPTY = false, MKRHPA = false, MSUB0 = false,
    NEXTotp = true, NPi = false, NWELi = false, NWRNW = true, OD = true, OD218dg = false,
    OD225dg = false, PMDMY = false, POLYGi1 = false, POLYGi2 = false, POLYGi3 = false, POi = true,
    PPi = false, PWELL1 = true, PWbki = false, RPOi = false, SUBS1 = false, VTHNi = false,
    VTLNi = false, spolym2 = false, spolym4 = false, spolym6 = false, spolyp2 = false, spolyp4 = false,
    spolyp6 = false, BLACKBOXall = true, MKRMSKREG = true, NACTALL0 = false, POBIASMdrawing2 = false,
    POBIASMdrawing4 = false, POBIASMdrawing6 = false, POBIASPdrawing2 = false, POBIASPdrawing4 = false,
    POBIASPdrawing6 = false, POLYACTsign = true, POinoBlaze = false, SEALRINGi = true,
    VNPNMSIPW = false, VNPNMSIPW25 = false}, ee));
                   Logic:-&or(DCOdg, DCOmsk)

How did you get that ?

Best regards,

@Carl Love 

Thank you for your answer.

Indeed, there is lots of variable.

Let me add some details on my work, if you don't mind :

The equation I am currently working on is the definition on how you are suposed to construct a specific device ( example: a transistor in micro-electrnonic). The equation details which material you can or cannot use.

When you talk about truth table, you are talking about all the differents possibilities the equations can give you.

If we take for example, A . B ( A And B) we will have for truth table:

A  |  B  | Output
-----------------
0  |  0  |   0
0  |  1  |   0
1  |  0  |   0
1  |  1  |   1

What i am loonking for is a truth table that has this form:

Example : A . B ( A And B) we will have for truth table:

Layer | State
-------------
A     |   1
B     |   1

As experienced, i know that the truth table generated with the equation i am working with, should give me a truth table that has this form :

Layer     | State
-----------------
Layer 1   |   0
Layer 2   |   -
Layer 3   |   1
Layer 4   |   0
etc...
Layer 46  |   1

 

That means that after a proper simplifications, my equations should look like ( if i understand properly the purpose of the BooleanSimplify function):

Layer 1 and Layer 3 and not(Layer 4) ... and Layer 46

No "or" operation should finaly exist in the final simplified equation, if this one is properly simplified of course.

That means that normaly, there is some trivial simplification to be done, even though i have 46 variables, isn't it ?

Page 1 of 1