Items tagged with logic logic Tagged Items Feed

Is there a library to draw state machine diagram from logic table in Maple?

is it possible?

i want to prove the injective of new custom operator based on custom logic table according to previous post

and want to see why new custom operator for integers are unordered or sometimes ordered

1. for example how to convert decimal or integer number into base 3 number, base 5 number etc. to do logical operation with custom logic table for example,


120 special operator 235 




special operator according to logical table is

1st op 2nd op output
0 0 1
0 1 0
1 0 1
1 1 0




=00010100 = 20

for base 10

1 op1 5 = 


op1   12


first digit of first number 1     = 1

first digit of second number 1 = 2

 then find 12 in logic table, it is 1, separation is 1 means move the value 1

to left 1 digit become 10

convert 10 back from base 3 to base 10, it is 3

how to construct this unknown name operator table with the custom logic table Min, Except, Diff

based on the operation described


no matter the logic table is correct or not, hope to mechanize these calculation steps for developing 3 operation table for base 10 quickly.

is it possible to develop a new kind of algebra with 3 new operators with the use of 3 operation table?



1. is module in algebraic geometry for classification of topological space which a poset is a frame

2. which invariant is for doing this classification of topological space in algebraic geometry or group cohomology?

3. if want to do full combination before classification, which kind of polynomials be a full combination

4. is poset just like function fst and snd function for meet and join in functional programming instead of using "and" and "or" logic? how a matrix group related with topological space which a poset is a frame?

5. is there any invariant function for classification of topological space in maple?

Maple has a powerful package for manipulation with logical expressions (Logic package). But it lacks for transfomation a boolean expression to algebraic normal form (ANF). In fact, this transfomation is very simple and implements by applying simple rules

to disjunctive normal form.

I suppose that this can be reached by introducing some custom operators and transfomations, if it is possible in Maple.


I find this a little frustrating as I learn Maple, so I think there is a better way to handle this.

I find myself having to keep wrapping expressions with evalf() in order to compare them, since when I use a constant such as Pi in these expressions and then compare them,  Maple complains.

In a large program, one does not know if an expression contains Pi or not beforehand, so is one really supposed to convert every expression to float just in case they might need to compare 2 expressions? 

Let me explain with simple example:

x:=1.2;  #it does not matter if this was 12/10 or 1.2, same error will result.
if x<y then

The above gives the error "Error, cannot determine if this expression is true or false: 1.2<(1/3)*Pi"

So I changed the y assignment above to y:=evalf(Pi/3); or evalf(Pi)/3; and now Maple is happy.

But this for me looks awkward. In Mathematica, I can simply write the same, using symbolic Pi, and it works as is:

x = 1.2;  #even if this is symbolic 12/10 it will also work
y = Pi/3;
If[x < y, Print["x<y"], Print["x>=y"]]

I did not have to write  y=N[Pi/3]  where N[] is the equivalent function to Maple's evalf() which converts its argument to real.

So, now in Maple, I find myself writing evalf() around so many things, since I have to anticipate I might need to compare them in some logic later on and I can't keep track which one has some symbolic constant such as Pi in them or not. While in Mathematica I never had to worry about this.

Is there a way to reduce the need to having to use evalf() so much?
It seems to me, Maple should be able to decide if  1<Pi without me having to write 1<evalf(Pi) ?


(Observeration, Hypothesis) = (then,if)

I want to use all logic with just a custom logic MP(A,B), simply notation as (A,B)

and convert all basic logics into above definition

A -> B = (B,A)  --- implication
(not (not A)) v B = (B,not A) -- Disj
not (not (A ^ B)) = not( (not A) v (not B) ) = not(not B, A) -- Conj

when i meet Disj and Conj

Is not(not B, A) = (B, not A) ?

if so, i am confused as it conclude Disj = Conj ?!

the reason i ask this is that Not logic make pattern not match

i have thought to make not(Prop("Go")) to become Prop("not Go") if not logic can move into proposition

if not logic has distributivity

i design this

(Observeration, Hypothesis) = (then,if)

because convenient of calculation

however, i do not understand not applied in not(Observeration, Hypothesis) if it can not move into bracket to become (not Observeration, not Hypothesis)


should it not(Observeration, Hypothesis) = (Observeration, not Hypothesis) ?correct?


entail logic ⊨ is equivalent to what logic which in terms of conj and disj and not 

for example ⊨A <-> B, there is nothing in left hand side, 


does it mean that it should represent Entail(_, A<->B)  where _ is wildcard? 

How to write notation for logical induction programming in Maple like F# or Haskell having tuples?

such as 

Conj(A,Disj(B,C)) ...

We have 12 sets S[1], S[2], ..., S[12] and the listlist LL:=[[2, 4, 5, 8, 10], [1, 3, 6, 7, 11], [2, 5, 6, 9, 10],
 [1, 5, 6, 9, 11], [1, 3, 4, 7, 12], [2, 3, 4, 8, 12], [2, 5, 10, 11, 12], [1, 6, 10, 11, 12], [3, 4, 10, 11, 12], [1, 3, 7, 8, 9], [2, 4, 7, 8, 9], [5, 6, 7, 8, 9]] which means that the set S[1] does not intersect with the sets
S[2], S[4], S[5], S[8], and S[10] (PS. but S[1] intersects with S[1], S[3], S[6], S[7], S[9], S[11], S[12]) and so on. What...

May I obtain, with Maple, an answer, true or false, about general questions of Logic and Set Theory?

i.e. Without constructing a Set, I want to know if is it true or false, that "if A is a subset of B and B is a subset of C then A is a subset of C".


Thanks in advance



Hello everyone,

I have been trying to use MAPLE 16 for Boolean algebra computations. BooleanSimplify( ) command in Logic-Mathematics is giving me incorrect results, in the following code:


f:=(not(x1)and not(x2) and not(x3)) or (x1 and x2 and x4);   #Create a 4 variable function f

g:=((x1 and x2) or (x2 and x3)) or (x3 and x4);    #Create another 4 variable function g

f2:=f &or g;



I would like to have logical operator which will spit out true if my variables are proportional to each other, something like:

a:= A*some*other*stuff;


evalb(a ~ b);

gives true


Is there an easy way to do this? 

1 2 3 4 5 Page 1 of 5