I want to check if two expressions are equal to each other.
For example 3a+5b === 5b+3a should return 'true'.
I'm trying to use a function:
CloudDeploy[
APIFunction[
{
"x" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"],
"y" ->Restricted["SemanticExpression", All, Automatic,"equalityTestingContext`"]
},
TrueQ[Simplify[#x == #y]] &
],
Permissions -> "Public"
]
This is returning true for given example but fails for checking for example 5aewq+3(b^3) === 3(b^3)+5aqwe, returning 'No result — at least one parameter could not be interpreted'.
What should be changed in above code to allow comparison of more complex expressions? Maybe 'Restricted' interpreter?
It seems that the interpreter construes 5a
as 5*a
but aqwe
as a 4-letter variable name and not the same as aewq
.
I guess that it (the interpreter) follows the practice, common to many programming languages, of regarding an alphanumeric string beginning with a letter as the name of an entity of some sort but parses a string beginning with a digit as a multiplication with the sign omitted.
So 5a
is interpreted as 5*a
, and 123.45a
is interpreted as 123.45*a
, but strings such as a
, ab
, abc
, a1
, a2c
are all interpreted as entity names. All of this, in particular the interpretation of 2a
as 2*a
is consistent with the way that Mathematica / The Wolfram Language interprets input.