I want to use Mathematica to show that the inner product of a vector with itself is equal to the square of its norm.

This is what I tried:

$Assumptions = x ∈ Vectors[3, Reals];
expr = Dot[x, x] == Norm[x]^2;

(*x.x == Norm[x]^2*)

(*x.x == Norm[x]^2*)

I had expected at least one of the last two lines to return True.

Why couldn't Mathematica simplify expr to True in this case? Are there additional assumptions I should include so that it return True?

  • 2
    $\begingroup$ One important thing to know is that not every function is supported. I haven't used this functionality much, so I might be wrong, but I think that Norm is simply not (fully) supported. $\endgroup$
    – Szabolcs
    Feb 3, 2016 at 15:46
  • 1
    $\begingroup$ The strange thing is that the documentation for Norm explicitly says that For vectors, Norm[v] is Sqrt[v.Conjugate[v]]. expr = Dot[x, x] == Sqrt[Dot[x, Conjugate[x]]]^2 does yield true, so Norm is not considering x to be a vector. $\endgroup$
    – rhermans
    Feb 3, 2016 at 16:17

1 Answer 1


I think the closest you can get to what you looking for is

Assuming[{a, b, c} ∈ Reals, With[{x = {a, b, c}}, x.x == Norm[x]^2 // Simplify]]



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.