A condition that we require on this function is that P <: Q implies dual_type(P) <: dual_type(Q). In particular, this means that we cannot have dual_type(P) == Dual(P, tangent_type(P)) if P is abstract.
This is something that ought to be tested a lot better than it currently is (we have exactly the same requirement for codual_type, but don't properly test it).
Originally posted by @willtebbutt in #389 (comment)
A condition that we require on this function is that
P <: Qimpliesdual_type(P) <: dual_type(Q). In particular, this means that we cannot havedual_type(P) == Dual(P, tangent_type(P))ifPis abstract.This is something that ought to be tested a lot better than it currently is (we have exactly the same requirement for
codual_type, but don't properly test it).Originally posted by @willtebbutt in #389 (comment)