Exterior powers of dual free modules¶
Given a free module of finite rank over a commutative ring
and a positive integer
, the p-th exterior power of the dual of
is the
set
of all alternating forms of degree
on
, i.e. of
all multilinear maps
that vanish whenever any of two of their arguments are equal.
Note that (the dual of
).
is a free module of rank
over
,
where
is the rank of
.
Accordingly, exterior powers of free modules are implemented by a class,
ExtPowerFreeModule
, which inherits from the class
FiniteRankFreeModule
.
AUTHORS:
- Eric Gourgoulhon (2015): initial version
REFERENCES:
- K. Conrad: Exterior powers, http://www.math.uconn.edu/~kconrad/blurbs/
- Chap. 19 of S. Lang: Algebra, 3rd ed., Springer (New York) (2002)
-
class
sage.tensor.modules.ext_pow_free_module.
ExtPowerFreeModule
(fmodule, degree, name=None, latex_name=None)¶ Bases:
sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule
Class for the exterior powers of the dual of a free module of finite rank over a commutative ring.
Given a free module
of finite rank over a commutative ring
and a positive integer
, the p-th exterior power of the dual of
is the set
of all alternating forms of degree
on
, i.e. of all multilinear maps
that vanish whenever any of two of their arguments are equal. Note that
(the dual of
).
is a free module of rank
over
, where
is the rank of
. Accordingly, the class
ExtPowerFreeModule
inherits from the classFiniteRankFreeModule
.This is a Sage parent class, whose element class is
FreeModuleAltForm
.INPUT:
fmodule
– free moduleof finite rank, as an instance of
FiniteRankFreeModule
degree
– positive integer; the degreeof the alternating forms
name
– (default:None
) string; name given tolatex_name
– (default:None
) string; LaTeX symbol to denote
EXAMPLES:
2nd exterior power of the dual of a free
-module of rank 3:
sage: M = FiniteRankFreeModule(ZZ, 3, name='M') sage: e = M.basis('e') sage: from sage.tensor.modules.ext_pow_free_module import ExtPowerFreeModule sage: A = ExtPowerFreeModule(M, 2) ; A 2nd exterior power of the dual of the Rank-3 free module M over the Integer Ring
Instead of importing ExtPowerFreeModule in the global name space, it is recommended to use the module’s method
dual_exterior_power()
:sage: A = M.dual_exterior_power(2) ; A 2nd exterior power of the dual of the Rank-3 free module M over the Integer Ring sage: latex(A) \Lambda^{2}\left(M^*\right)
A
is a module (actually a free module) over:
sage: A.category() Category of finite dimensional modules over Integer Ring sage: A in Modules(ZZ) True sage: A.rank() 3 sage: A.base_ring() Integer Ring sage: A.base_module() Rank-3 free module M over the Integer Ring
A
is a parent object, whose elements are alternating forms, represented by instances of the classFreeModuleAltForm
:sage: a = A.an_element() ; a Alternating form of degree 2 on the Rank-3 free module M over the Integer Ring sage: a.display() # expansion with respect to M's default basis (e) e^0/\e^1 sage: from sage.tensor.modules.free_module_alt_form import FreeModuleAltForm sage: isinstance(a, FreeModuleAltForm) True sage: a in A True sage: A.is_parent_of(a) True
Elements can be constructed from
A
. In particular, 0 yields the zero element ofA
:sage: A(0) Alternating form zero of degree 2 on the Rank-3 free module M over the Integer Ring sage: A(0) is A.zero() True
while non-zero elements are constructed by providing their components in a given basis:
sage: e Basis (e_0,e_1,e_2) on the Rank-3 free module M over the Integer Ring sage: comp = [[0,3,-1],[-3,0,4],[1,-4,0]] sage: a = A(comp, basis=e, name='a') ; a Alternating form a of degree 2 on the Rank-3 free module M over the Integer Ring sage: a.display(e) a = 3 e^0/\e^1 - e^0/\e^2 + 4 e^1/\e^2
An alternative is to construct the alternating form from an empty list of components and to set the nonzero components afterwards:
sage: a = A([], name='a') sage: a.set_comp(e)[0,1] = 3 sage: a.set_comp(e)[0,2] = -1 sage: a.set_comp(e)[1,2] = 4 sage: a.display(e) a = 3 e^0/\e^1 - e^0/\e^2 + 4 e^1/\e^2
The exterior powers are unique:
sage: A is M.dual_exterior_power(2) True
The exterior power
is nothing but
:
sage: M.dual_exterior_power(1) is M.dual() True sage: M.dual() Dual of the Rank-3 free module M over the Integer Ring sage: latex(M.dual()) M^*
Since any tensor of type (0,1) is a linear form, there is a coercion map from the set
of such tensors to
:
sage: T01 = M.tensor_module(0,1) ; T01 Free module of type-(0,1) tensors on the Rank-3 free module M over the Integer Ring sage: M.dual().has_coerce_map_from(T01) True
There is also a coercion map in the reverse direction:
sage: T01.has_coerce_map_from(M.dual()) True
For a degree
, the coercion holds only in the direction
:
sage: T02 = M.tensor_module(0,2) ; T02 Free module of type-(0,2) tensors on the Rank-3 free module M over the Integer Ring sage: T02.has_coerce_map_from(A) True sage: A.has_coerce_map_from(T02) False
The coercion map
in action:
sage: b = T01([-2,1,4], basis=e, name='b') ; b Type-(0,1) tensor b on the Rank-3 free module M over the Integer Ring sage: b.display(e) b = -2 e^0 + e^1 + 4 e^2 sage: lb = M.dual()(b) ; lb Linear form b on the Rank-3 free module M over the Integer Ring sage: lb.display(e) b = -2 e^0 + e^1 + 4 e^2
The coercion map
in action:
sage: tlb = T01(lb) ; tlb Type-(0,1) tensor b on the Rank-3 free module M over the Integer Ring sage: tlb == b True
The coercion map
in action:
sage: ta = T02(a) ; ta Type-(0,2) tensor a on the Rank-3 free module M over the Integer Ring sage: ta.display(e) a = 3 e^0*e^1 - e^0*e^2 - 3 e^1*e^0 + 4 e^1*e^2 + e^2*e^0 - 4 e^2*e^1 sage: a.display(e) a = 3 e^0/\e^1 - e^0/\e^2 + 4 e^1/\e^2 sage: ta.symmetries() # the antisymmetry is of course preserved no symmetry; antisymmetry: (0, 1)
-
Element
¶ alias of
FreeModuleAltForm
-
base_module
()¶ Return the free module on which
self
is constructed.OUTPUT:
- instance of
FiniteRankFreeModule
representing the free module on which the exterior power is defined.
EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 5, name='M') sage: A = M.dual_exterior_power(2) sage: A.base_module() Rank-5 free module M over the Integer Ring sage: A.base_module() is M True
- instance of
-
degree
()¶ Return the degree of
self
.OUTPUT:
- integer
such that
self
is the exterior power
EXAMPLES:
sage: M = FiniteRankFreeModule(ZZ, 5, name='M') sage: A = M.dual_exterior_power(2) sage: A.degree() 2 sage: M.dual_exterior_power(4).degree() 4
- integer