Is there a reason why types like `Dual` and `Tag` or functions like `value` and `derivative` are left undocumented?