I would like to share more universal method I use in my scientific manipulations involving trigonomeric expressions of real arguments. It does not require any identities used by hand and is mathematically coincise.
The idea is to convert trigonometric expression to exponents, which in turn will play the role of monomials. Then you can use very powerful Groebner basis manipulation method. Let me ilustrate how it works in your simple cases.
First define some help function which translates trigonometric expression to polynomials. The simplified version looks like
ExpToPoly[expr_] := Block[{ex = ExpandAll[TrigToExp[expr]]},
ReplaceRepeated[
ex, {Exp[Complex[0, a_Rational | a_Integer]*b_ + c_.] :>
Power[b, a]*Exp[c]}]]
Then input expresions you want to manipulate.
expr = Sin[x];
use = Cos[x];
Lets look how it is transformed to polynomial
ExpToPoly[TrigToExp[expr]]
I/(2 x) - (I x)/2
Now calculate Groebner base and solve the identity you find useful (in your simple cases actually you have no choise)
gb = GroebnerBasis[{myexpr - ExpToPoly[TrigToExp[expr]],
myuse - ExpToPoly[TrigToExp[use]]}, {myuse}, {x},
MonomialOrder -> EliminationOrder]
{-1 + myexpr^2 + myuse^2}
From which it follows
Solve[gb[[1]] == 0, myexpr] /. {myuse -> use}
{{myexpr -> -Sqrt[1 - Cos[x]^2]}, {myexpr -> Sqrt[1 - Cos[x]^2]}}
Lets look at one of simple transformation of previous answer.
expr1 = Sin[2 x] Tan[x]^3;
use = Cos[x];
gb1 = GroebnerBasis[{myexpr - ExpToPoly[TrigToExp[expr1]],
myuse - ExpToPoly[TrigToExp[use]]}, {myuse}, {x},
MonomialOrder -> EliminationOrder]
{2 - 4 myuse^2 - myexpr myuse^2 + 2 myuse^4}
Now in order to prevent automatic convertion to Sec[] function we Hold solved rezult:
Hold @@ (myexpr /. Solve[gb1[[1]] == 0, myexpr]) /. {myuse -> use}
Hold[(2 (1 - 2 Cos[x]^2 + Cos[x]^4))/Cos[x]^2]
This method can easily be extended to many variables, allows very complicated manipulations of trigonometric expressions (at least of real arguments).
And most important: it is based on Groebner basis, so is always mathematically correct.
Just noted that, that using this approach you can easily convert to double, triple, etc... argument as was asked in the wish list:
expr = Sin[x];
use = Cos[2 x];
gb2 = GroebnerBasis[{myexpr - ExpToPoly[TrigToExp[expr]],
myuse - ExpToPoly[TrigToExp[use]]}, {myuse}, {x},
MonomialOrder -> EliminationOrder]
{-1 + 2 myexpr^2 + myuse}
The result being
Hold @@ (myexpr /. Solve[gb2[[1]] == 0, myexpr]) /. {myuse -> use}
Hold[-(Sqrt[1 - Cos[2 x]]/Sqrt[2]), Sqrt[1 - Cos[2 x]]/Sqrt[2]]
Sin[x]
only equalsSqrt[1-Cos[x]^2]
for half of its period. Are you sure that is the answer you want? $\endgroup$