De Rham Cohomology¶
Let
where
and the corresponding ring is obtained by
The de Rham cohomology ring is implemented via DeRhamCohomologyRing.
Its elements, the cohomology classes, are represented by
DeRhamCohomologyClass.
AUTHORS:
Michael Jung (2021) : initial version
- class sage.manifolds.differentiable.de_rham_cohomology.DeRhamCohomologyClass(parent, representative)[source]¶
Bases:
AlgebraElementDefine a cohomology class in the de Rham cohomology ring.
INPUT:
parent– de Rham cohomology ring represented by an instance ofDeRhamCohomologyRingrepresentative– a closed (mixed) differential form representing the cohomology class
Note
The current implementation only provides basic features. Comparison via exact forms are not supported at the time being.
EXAMPLES:
sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: C = M.de_rham_complex() sage: H = C.cohomology() sage: omega = M.diff_form(1, [1,1], name='omega') sage: u = H(omega); u [omega]
>>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> C = M.de_rham_complex() >>> H = C.cohomology() >>> omega = M.diff_form(Integer(1), [Integer(1),Integer(1)], name='omega') >>> u = H(omega); u [omega]
M = Manifold(2, 'M') X.<x,y> = M.chart() C = M.de_rham_complex() H = C.cohomology() omega = M.diff_form(1, [1,1], name='omega') u = H(omega); u
Cohomology classes can be lifted to the algebra of mixed differential forms:
sage: u.lift() Mixed differential form omega on the 2-dimensional differentiable manifold M
>>> from sage.all import * >>> u.lift() Mixed differential form omega on the 2-dimensional differentiable manifold M
u.lift()
However, comparison of two cohomology classes is limited the time being:
sage: eta = M.diff_form(1, [1,1], name='eta') sage: H(eta) == u True sage: H.one() == u Traceback (most recent call last): ... NotImplementedError: comparison via exact forms is currently not supported
>>> from sage.all import * >>> eta = M.diff_form(Integer(1), [Integer(1),Integer(1)], name='eta') >>> H(eta) == u True >>> H.one() == u Traceback (most recent call last): ... NotImplementedError: comparison via exact forms is currently not supported
eta = M.diff_form(1, [1,1], name='eta') H(eta) == u H.one() == u
- cup(other)[source]¶
Cup product of two cohomology classes.
INPUT:
other– another cohomology class in the de Rham cohomology
EXAMPLES:
sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: C = M.de_rham_complex() sage: H = C.cohomology() sage: omega = M.diff_form(1, [1,1], name='omega') sage: eta = M.diff_form(1, [1,-1], name='eta') sage: H(omega).cup(H(eta)) [omega∧eta]
>>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> C = M.de_rham_complex() >>> H = C.cohomology() >>> omega = M.diff_form(Integer(1), [Integer(1),Integer(1)], name='omega') >>> eta = M.diff_form(Integer(1), [Integer(1),-Integer(1)], name='eta') >>> H(omega).cup(H(eta)) [omega∧eta]
M = Manifold(2, 'M') X.<x,y> = M.chart() C = M.de_rham_complex() H = C.cohomology() omega = M.diff_form(1, [1,1], name='omega') eta = M.diff_form(1, [1,-1], name='eta') H(omega).cup(H(eta))
- lift()[source]¶
Return a representative of
selfin the associated de Rham complex.EXAMPLES:
sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: C = M.de_rham_complex() sage: H = C.cohomology() sage: omega = M.diff_form(2, name='omega') sage: omega[0,1] = x sage: omega.display() omega = x dx∧dy sage: u = H(omega); u [omega] sage: u.representative() Mixed differential form omega on the 2-dimensional differentiable manifold M
>>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> C = M.de_rham_complex() >>> H = C.cohomology() >>> omega = M.diff_form(Integer(2), name='omega') >>> omega[Integer(0),Integer(1)] = x >>> omega.display() omega = x dx∧dy >>> u = H(omega); u [omega] >>> u.representative() Mixed differential form omega on the 2-dimensional differentiable manifold M
M = Manifold(2, 'M') X.<x,y> = M.chart() C = M.de_rham_complex() H = C.cohomology() omega = M.diff_form(2, name='omega') omega[0,1] = x omega.display() u = H(omega); u u.representative()
- representative()[source]¶
Return a representative of
selfin the associated de Rham complex.EXAMPLES:
sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: C = M.de_rham_complex() sage: H = C.cohomology() sage: omega = M.diff_form(2, name='omega') sage: omega[0,1] = x sage: omega.display() omega = x dx∧dy sage: u = H(omega); u [omega] sage: u.representative() Mixed differential form omega on the 2-dimensional differentiable manifold M
>>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> C = M.de_rham_complex() >>> H = C.cohomology() >>> omega = M.diff_form(Integer(2), name='omega') >>> omega[Integer(0),Integer(1)] = x >>> omega.display() omega = x dx∧dy >>> u = H(omega); u [omega] >>> u.representative() Mixed differential form omega on the 2-dimensional differentiable manifold M
M = Manifold(2, 'M') X.<x,y> = M.chart() C = M.de_rham_complex() H = C.cohomology() omega = M.diff_form(2, name='omega') omega[0,1] = x omega.display() u = H(omega); u u.representative()
- class sage.manifolds.differentiable.de_rham_cohomology.DeRhamCohomologyRing(de_rham_complex)[source]¶
Bases:
Parent,UniqueRepresentationThe de Rham cohomology ring of a de Rham complex.
This ring is naturally endowed with a multiplication induced by the wedge product, called cup product, see
DeRhamCohomologyClass.cup().Note
The current implementation only provides basic features. Comparison via exact forms are not supported at the time being.
INPUT:
de_rham_complex– a de Rham complex, typically an instance ofMixedFormAlgebra
EXAMPLES:
We define the de Rham cohomology ring on a parallelizable manifold
:sage: M = Manifold(2, 'M') sage: X.<x,y> = M.chart() sage: C = M.de_rham_complex() sage: H = C.cohomology(); H De Rham cohomology ring on the 2-dimensional differentiable manifold M
>>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> X = M.chart(names=('x', 'y',)); (x, y,) = X._first_ngens(2) >>> C = M.de_rham_complex() >>> H = C.cohomology(); H De Rham cohomology ring on the 2-dimensional differentiable manifold M
M = Manifold(2, 'M') X.<x,y> = M.chart() C = M.de_rham_complex() H = C.cohomology(); H
Its elements are induced by closed differential forms on
:sage: beta = M.diff_form(1, [1,0], name='beta') sage: beta.display() beta = dx sage: d1 = C.differential(1) sage: d1(beta).display() dbeta = 0 sage: b = H(beta); b [beta]
>>> from sage.all import * >>> beta = M.diff_form(Integer(1), [Integer(1),Integer(0)], name='beta') >>> beta.display() beta = dx >>> d1 = C.differential(Integer(1)) >>> d1(beta).display() dbeta = 0 >>> b = H(beta); b [beta]
beta = M.diff_form(1, [1,0], name='beta') beta.display() d1 = C.differential(1) d1(beta).display() b = H(beta); b
Cohomology classes can be lifted to the algebra of mixed differential forms:
sage: b.representative() Mixed differential form beta on the 2-dimensional differentiable manifold M
>>> from sage.all import * >>> b.representative() Mixed differential form beta on the 2-dimensional differentiable manifold M
b.representative()
The ring admits a zero and unit element:
sage: H.zero() [zero] sage: H.one() [one]
>>> from sage.all import * >>> H.zero() [zero] >>> H.one() [one]
H.zero() H.one()
- Element[source]¶
alias of
DeRhamCohomologyClass
- one()[source]¶
Return the one element of
self.EXAMPLES:
sage: M = Manifold(2, 'M') sage: C = M.de_rham_complex() sage: H = C.cohomology() sage: H.one() [one] sage: H.one().representative() Mixed differential form one on the 2-dimensional differentiable manifold M
>>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> C = M.de_rham_complex() >>> H = C.cohomology() >>> H.one() [one] >>> H.one().representative() Mixed differential form one on the 2-dimensional differentiable manifold M
M = Manifold(2, 'M') C = M.de_rham_complex() H = C.cohomology() H.one() H.one().representative()
- zero()[source]¶
Return the zero element of
self.EXAMPLES:
sage: M = Manifold(2, 'M') sage: C = M.de_rham_complex() sage: H = C.cohomology() sage: H.zero() [zero] sage: H.zero().representative() Mixed differential form zero on the 2-dimensional differentiable manifold M
>>> from sage.all import * >>> M = Manifold(Integer(2), 'M') >>> C = M.de_rham_complex() >>> H = C.cohomology() >>> H.zero() [zero] >>> H.zero().representative() Mixed differential form zero on the 2-dimensional differentiable manifold M
M = Manifold(2, 'M') C = M.de_rham_complex() H = C.cohomology() H.zero() H.zero().representative()