I think the definition of s1 is missing a "*". Try changing
(C8) s1(t) := ((U0(t).U1(t))*(U0(t).V0(t) - U0(t).V1(t)) -
(U0(t).U0(t))*(U1(t).V0(t) - U1(t).V1(t)))/((U1(t) . U0(t)) - (U1(t) .
U1(t)) (U0(t) . U0(t)));
To
(C8) s1(t) := ((U0(t).U1(t))*(U0(t).V0(t) - U0(t).V1(t)) -
(U0(t).U0(t))*(U1(t).V0(t) - U1(t).V1(t)))/((U1(t) . U0(t)) - (U1(t) .
U1(t)) * (U0(t) . U0(t)));
Notice the "*" I added in the last line.
Maybe your use of D2 as a function name is okay; however, it's
best to avoid using C1, D1, C2, D2, ... as identifiers in Maxima --
these identifiers get bound to input and output lines.
Barton