# Reduce yields False although solution exists

This is the first time I use Mathematica, and I wonder how to use Solve and Reduce. The following code is taken from a geometric problem; if you are interested in the setup, see below.

My problem is that the following code

a1 := 180 Degree - a;
x0 := {0, 0, 0};
d1 := {1, 0, 0};
x1 := x0 + d1;
d2 := {Cos[a1], Sin[a1], 0};
x2 := x1 + d2;
d3 := RotationMatrix[b,d2] . RotationMatrix[a1, Cross[d1, d2]] . d2
x3 := x2 + d3;
d4 := RotationMatrix[b,d3] . RotationMatrix[a1, Cross[d2, d3]] . d3
x4 := x3 + d4;
a := 90 Degree;
Reduce[x0==x4, b, Reals]


evaluates to False; however, if I run

b := 0;
x0 == x4;


I obtain True as expected.

Question: Why does Reduce evaluate to False although a solution b=0 exists?

Geometric meaning: consider 4 straight lines of length 1 in R^3 with an angle a at each vertex. Denote by b the angle enclosed by the two planes described by any edge and its two adjacent edges. For which choice of b can we close the loop?

RotationMatrix involves a lot of instances of Conjugate. You can get rid of them with ComplexExpand and Simplify:

a1 = 180 Degree - a;
x0 = {0, 0, 0};
d1 = {1, 0, 0};
x1 = x0 + d1;
d2 = {Cos[a1], Sin[a1], 0};
x2 = x1 + d2;
d3 = Simplify@ ComplexExpand[RotationMatrix[b, d2].RotationMatrix[a1, Cross[d1, d2]].d2];
x3 = x2 + d3;
d4 = Simplify@ ComplexExpand[RotationMatrix[b, d3].RotationMatrix[a1, Cross[d2, d3]].d3];
x4 = x3 + d4;
a = 90 Degree;
Reduce[x0 == x4, b, Reals]


C[1] ∈ Integers && b == 2 π C[1]

Still, it is not okay for Reduce to evaluate to False. It should stay rather unevaluated if it cannot decide correctly. I think you should report this to Wolfram Support.