# === not working properly [closed]

I've been trying to check the identity using wolfram Mathematica and I've found the following

ppo = Plus[Times[Rational[1,6],Power[a,2],Plus[1,Subscript[i,3]],Plus[2,Subscript[i,3]],Plus[6,Times[-3,s],Times[2,Subscript[i,3]]]],Times[Rational[1,2],Plus[1,Subscript[i,3]],Plus[2,Subscript[i,3]],Plus[6,Times[-5,s],Power[s,2],Times[Plus[5,Times[-2,s]],Subscript[i,3]],Power[Subscript[i,3],2]],Power[Superscript[a,0],2]]]

ppn = Plus[Times[Rational[-1,6],Power[a,2],Plus[-6,Times[3,s],Times[-2,Subscript[i,3]]],Plus[2,Times[3,Subscript[i,3]],Power[Subscript[i,3],2]]],Times[Rational[1,2],Plus[2,Times[3,Subscript[i,3]],Power[Subscript[i,3],2]],Plus[6,Times[-5,s],Power[s,2],Times[Plus[5,Times[-2,s]],Subscript[i,3]],Power[Subscript[i,3],2]],Power[Superscript[a,0],2]]]


And when I try to compare these two expressions with

ppo === ppn


It returns False

But this is actually an identity

So what's the problem here? Am I getting something wrong?

## closed as off-topic by m_goldberg, Anton Antonov, march, MarcoB, AccidentalFourierTransformJan 31 at 0:10

This question appears to be off-topic. The users who voted to close gave this specific reason:

• "This question arises due to a simple mistake such as a trivial syntax error, incorrect capitalization, spelling mistake, or other typographical error and is unlikely to help any future visitors, or else it is easily found in the documentation." – m_goldberg, Anton Antonov, march, MarcoB, AccidentalFourierTransform
If this question can be reworded to fit the rules in the help center, please edit the question.

• Simplify[ppn == ppo] gives True. Don't use ===. Your ideas about its semantics are wrong. – m_goldberg Jan 30 at 17:27
• Expand[ppo] === Expand[ppn] works as well, but the point is that ppo and ppn are not structurally equivalent expressions. – Jason B. Jan 30 at 17:28

## 2 Answers

SameQ (===) is working as expected.

See the evaluation trace result:

FullSimplify[ppo === ppn] // Trace


Now see this result:

FullSimplify[ppo] === FullSimplify[ppn]

(* True *)


ppo and ppn may be mathematically identical, but they are not the same structurally. Thus, === returns False. Use ==, and coax it to do the work with Simplify.

Simplify[ppo == ppn]
(* True *)

• What do you mean by saying "same structurally"? – Melik Karapetyan Jan 30 at 18:15
• Look at x (y + 1) // TreeForm and x y + x // TreeForm. Do you see the difference? === effectively compares FullForm, of the expressions, and TreeForm is just a visualization of that. – John Doty Jan 30 at 18:36
• Wow, thank you a lot. – Melik Karapetyan Feb 9 at 23:38