Revision history [back]

The issue arises because you have not fully defined the transition maps on the manifold: the inverse maps are missing. You have to generate them by invoking

ChangeFirst_to_Second.inverse()


just after the definition of ChangeFirst_to_Second and

ChangeSecond_to_Third.inverse()


just after the definition of ChangeSecond_to_Third. Then everything is OK.

The reason why the inverse transition maps are not automatically evaluated is that in certain cases Sage is not capable to compute them (the method inverse() returns then an error); the user has then to provide them by hand, via the method set_inverse().

The issue arises because you have not fully defined the transition maps on the manifold: the inverse maps are missing. You have to generate them by invoking

ChangeFirst_to_Second.inverse()


just after the definition of ChangeFirst_to_Second and

ChangeSecond_to_Third.inverse()


just after the definition of ChangeSecond_to_Third. Then everything is OK.

The reason why the inverse transition maps are not automatically evaluated is that in certain cases Sage is not capable to compute them (the method inverse() returns then an error); the user has then to provide them by hand, via the method set_inverse().

EDIT: actually, in the present case, the inverse transition maps should not be required to compute the expression of $g$ in the third frame. This will be fixed in the next release of SageMath, thanks to the Trac ticket #28072, which has been merged in SageMath 8.9.beta2.