human
I wrote the below code

    def f(rv):
        if (not (rv.func in (cos, sin))):
            return rv
        f = rv.func
        arg = rv.args[0]
        if arg.is_Add:
            if first:
                args = list(ordered(arg.args))
            else:
                args = list(arg.args)
            a = args.pop()
            b = Add._from_args(args)
            if b.is_Add:
                if (f == sin):
                    return ((sin(a) * TR10(cos(b), first=False)) + (cos(a) * TR10(sin(b), first=False)))
                else:
                    return ((cos(a) * TR10(cos(b), first=False)) - (sin(a) * TR10(sin(b), first=False)))
            elif (f == sin):
                return ((sin(a) * cos(b)) + (cos(a) * sin(b)))
            else:
                return ((cos(a) * cos(b)) - (sin(a) * sin(b)))
        return rv
    return bottom_up(rv, f)

What's a good function header?
assistant
#Here's a good function header.

def TR10(rv, first=True):