The evalb() command performs a single, cursory comparison, and then returns "true", "false", or "FAIL". Consider the following:
evalb( 0.5 = 1/2 ); # true evalb( [0.5] = [0.5] ); # true evalb( [0.5] = [1/2] ); # false
The two "true" results are due to the fact that only one comparison is needed, but the "false" result would require two comparisons to determine that the argument is in fact true.
As a workaround, you can do something like this:
A := [1,1/2]; B := [1,0.5]; evalb( A = B ); # false andmap( evalb, A =~ B ); # true
A related issue is that Maple may need coaxing to check a statement involving non-floating-point numbers. For instance:
restart; f := sqrt(2) > 0; evalb( f ); # echos f evalb( evalf( f ) ); # true is( f ); # true