1 | initial version |
You are facing a shortcoming of the current implementation: the modules constructed upon M
, like the exterior power E
, are not endowed with their own bases; all their elements are expanded on wedge products of basis elements of E
. For instance
sage: E.an_element().display()
e_0∧e_1
(By the way, the line sage: e = M.basis('e')
seems to be missing in your code snippet). Hence E
is not implemented as a finite rank free module on the same setting as M
. This is reflected by the fact that it has a "base module":
sage: E.base_module()
Rank-3 free module M over the Integer Ring
and all its elements are expanded in terms of bases of this base module.
Such an implementation turned out to be convenient for tensor fields on manifolds. If one would like to extend it to allow for E
to have its own bases, then one should make some choice about the storage of the components of the elements of E
and the associated methods display
, comp
and set_comp
.