Documentation

TauCeti.Geometry.Symplectic.Manifold.Nijenhuis

The Nijenhuis tensor of a smooth almost complex structure #

For a smooth almost complex structure J on a finite-dimensional manifold, the Nijenhuis expression on vector fields is N_J(X, Y) = [JX, JY] - [X, Y] - J[JX, Y] - J[X, JY], with Mathlib's Lie bracket VectorField.mlieBracket. It is linear over differentiable functions in each argument, so it is a tensor: its value at x depends only on X x and Y x. This file constructs that tensor as a continuous bilinear map on each tangent space, through Mathlib's tensoriality criterion TensorialAt.mkHom₂, and proves its basic algebraic identities. The construction follows Mathlib's torsion tensor IsCovariantDerivativeOn.torsion.

The Nijenhuis tensor is the obstruction to integrability of J: the Newlander–Nirenberg theorem says that J comes from a complex atlas exactly when it vanishes. Its vanishing is equivalent to involutivity of the ±i eigenbundles of J in the complexified tangent bundle, and it controls the components of the exterior derivative outside the bidegrees (1,0) and (0,1). The identities N_J(Jv, w) = -J N_J(v, w) proved here are the real form of the type statement that N_J maps two (0,1) vectors to a (1,0) vector. Extended complex-bilinearly to the complexified tangent spaces ℂ ⊗[ℝ] T_x M, the tensor indeed maps two vectors of type (0,1) to a vector of type (1,0), two vectors of type (1,0) to a vector of type (0,1), and vanishes on a vector of type (1,0) and one of type (0,1); on parts of real tangent vectors, N_J(v^(0,1), w^(0,1)) = N_J(v, w)^(1,0).

Main declarations #

Conventions #

No factor 1/4 is included; some sources use N_J / 4 instead.

References #

The Nijenhuis tensor of a smooth almost complex structure J at a point x: the continuous bilinear map on T_x M whose value on the values at x of differentiable vector fields X and Y is [JX, JY] - [X, Y] - J[JX, Y] - J[X, JY] at x (nijenhuis_apply).

Instances For
    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_apply {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I (↑⊤) M] (J : SmoothAlmostComplexStructure I M) {x : M} [FiniteDimensional ℝ E] {X Y : (x : M) → TangentSpace I x} (hX : (MDiffAt fun (x : M) => ⟨x, X x⟩) x) (hY : (MDiffAt fun (x : M) => ⟨x, Y x⟩) x) :
    ((J.nijenhuis x) (X x)) (Y x) = VectorField.mlieBracket I (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (X y)) (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (Y y)) x - VectorField.mlieBracket I X Y x - (fun (x : M) => ⇑(J.toEndomorphism x)) x (VectorField.mlieBracket I (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (X y)) Y x) - (fun (x : M) => ⇑(J.toEndomorphism x)) x (VectorField.mlieBracket I X (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (Y y)) x)

    On vector fields differentiable at x, the Nijenhuis tensor is N_J(X, Y) = [JX, JY] - [X, Y] - J[JX, Y] - J[X, JY].

    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_eq_zero_iff {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I (↑⊤) M] (J : SmoothAlmostComplexStructure I M) [FiniteDimensional ℝ E] :
    J.nijenhuis = 0 ↔ ∀ {X Y : (x : M) → TangentSpace I x} {x : M}, (MDiffAt fun (x : M) => ⟨x, X x⟩) x → (MDiffAt fun (x : M) => ⟨x, Y x⟩) x → VectorField.mlieBracket I (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (X y)) (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (Y y)) x = VectorField.mlieBracket I X Y x + (fun (x : M) => ⇑(J.toEndomorphism x)) x (VectorField.mlieBracket I (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (X y)) Y x) + (fun (x : M) => ⇑(J.toEndomorphism x)) x (VectorField.mlieBracket I X (fun (y : M) => (fun (x : M) => ⇑(J.toEndomorphism x)) y (Y y)) x)

    The Nijenhuis tensor vanishes everywhere exactly when [JX, JY] = [X, Y] + J[JX, Y] + J[X, JY] for all vector fields differentiable at the point.

    The Nijenhuis tensor is skew-symmetric.

    @[simp]

    The Nijenhuis tensor vanishes on the diagonal.

    @[simp]
    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_apply_left {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I (↑⊤) M] (J : SmoothAlmostComplexStructure I M) {x : M} [FiniteDimensional ℝ E] (v w : TangentSpace I x) :
    ((J.nijenhuis x) ((fun (x : M) => ⇑(J.toEndomorphism x)) x v)) w = -(fun (x : M) => ⇑(J.toEndomorphism x)) x (((J.nijenhuis x) v) w)

    The Nijenhuis tensor anti-commutes with J in its first argument: N_J(Jv, w) = -J N_J(v, w).

    @[simp]
    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_apply_right {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I (↑⊤) M] (J : SmoothAlmostComplexStructure I M) {x : M} [FiniteDimensional ℝ E] (v w : TangentSpace I x) :
    ((J.nijenhuis x) v) ((fun (x : M) => ⇑(J.toEndomorphism x)) x w) = -(fun (x : M) => ⇑(J.toEndomorphism x)) x (((J.nijenhuis x) v) w)

    The Nijenhuis tensor anti-commutes with J in its second argument: N_J(v, Jw) = -J N_J(v, w).

    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_apply_both {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I (↑⊤) M] (J : SmoothAlmostComplexStructure I M) {x : M} [FiniteDimensional ℝ E] (v w : TangentSpace I x) :
    ((J.nijenhuis x) ((fun (x : M) => ⇑(J.toEndomorphism x)) x v)) ((fun (x : M) => ⇑(J.toEndomorphism x)) x w) = -((J.nijenhuis x) v) w

    Applying J to both arguments of the Nijenhuis tensor changes its sign: N_J(Jv, Jw) = -N_J(v, w).

    @[simp]

    The almost complex structures J and -J have the same Nijenhuis tensor.

    Type identities on the complexified tangent space #

    Extend the Nijenhuis tensor complex-bilinearly to the complexification ℂ ⊗[ℝ] T_x M. By its anti-commutation with J in each argument, it maps two vectors of type (0,1) to a vector of type (1,0) and two vectors of type (1,0) to a vector of type (0,1), and it vanishes on a vector of type (1,0) and one of type (0,1). On the (0,1)- and (1,0)-parts of real tangent vectors, N_J(v^(0,1), w^(0,1)) = N_J(v, w)^(1,0) and N_J(v^(1,0), w^(1,0)) = N_J(v, w)^(0,1).

    The complex-bilinear extension of the Nijenhuis tensor maps an eigenvector of the complexified J for the eigenvalue μ in its first argument into the eigenspace for -μ. In particular it maps a vector of type (0,1) and any second vector to a vector of type (1,0).

    The complex-bilinear extension of the Nijenhuis tensor maps an eigenvector of the complexified J for the eigenvalue μ in its second argument into the eigenspace for -μ.

    @[simp]

    The complex-bilinear extension of the Nijenhuis tensor vanishes on the (1,0)-part of v and the (0,1)-part of w.

    @[simp]

    The complex-bilinear extension of the Nijenhuis tensor vanishes on the (0,1)-part of v and the (1,0)-part of w.

    @[simp]

    The type identity of the Nijenhuis tensor. Its complex-bilinear extension maps the (0,1)-parts of v and w to the (1,0)-part of N_J(v, w): N_J(v^(0,1), w^(0,1)) = N_J(v, w)^(1,0).

    @[simp]

    The conjugate type identity of the Nijenhuis tensor: its complex-bilinear extension maps the (1,0)-parts of v and w to the (0,1)-part of N_J(v, w): N_J(v^(1,0), w^(1,0)) = N_J(v, w)^(0,1).

    The Nijenhuis tensor in a chart #

    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_apply_eq_fderivWithin_inChart {E : Type u_1} {H : Type u_2} {M : Type u_3} [NormedAddCommGroup E] [NormedSpace ℝ E] [TopologicalSpace H] {I : ModelWithCorners ℝ E H} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I (↑⊤) M] (J : SmoothAlmostComplexStructure I M) (x : M) [FiniteDimensional ℝ E] (v w : TangentSpace I x) :
    ((J.nijenhuis x) v) w = ((fderivWithin ℝ (J.inChart x) (Set.range ↑I) (↑(extChartAt I x) x)) ((fun (x : M) => ⇑(J.toEndomorphism x)) x v)) w + ((fderivWithin ℝ (J.inChart x) (Set.range ↑I) (↑(extChartAt I x) x)) v) ((fun (x : M) => ⇑(J.toEndomorphism x)) x w) - ((fderivWithin ℝ (J.inChart x) (Set.range ↑I) (↑(extChartAt I x) x)) ((fun (x : M) => ⇑(J.toEndomorphism x)) x w)) v - ((fderivWithin ℝ (J.inChart x) (Set.range ↑I) (↑(extChartAt I x) x)) w) ((fun (x : M) => ⇑(J.toEndomorphism x)) x v)

    The Nijenhuis tensor in a chart. Let A be the derivative at the chart point of the almost complex structure read in the chart at x (SmoothAlmostComplexStructure.inChart). Then N_J(v, w) = A (J v) w + A v (J w) - A (J w) v - A w (J v).

    On a vector space, tensor vanishing is equivalent to vanishing on all pairs of model vectors. The right side uses the ordinary zero of the model space, not a tangent-space instance.

    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_eq_fderiv {V : Type u_1} [NormedAddCommGroup V] [NormedSpace ℝ V] [FiniteDimensional ℝ V] (J : SmoothAlmostComplexStructure (modelWithCornersSelf ℝ V) V) (A : V → V →L[ℝ] V) (x : V) (hA : (fun (y : V) => J.toEndomorphism y) =ᶠ[nhds x] A) (v w : V) :
    ((J.nijenhuis x) v) w = (fderiv ℝ (fun (y : V) => (A y) w) x) ((A x) v) - (fderiv ℝ (fun (y : V) => (A y) v) x) ((A x) w) + (A x) ((fderiv ℝ (fun (y : V) => (A y) v) x) w) - (A x) ((fderiv ℝ (fun (y : V) => (A y) w) x) v)

    In a vector space, the Nijenhuis tensor can be computed by differentiating the images of constant vector fields. The signs use the native bracket [X,Y] = DY X - DX Y.

    @[simp]
    theorem TauCeti.SmoothAlmostComplexStructure.nijenhuis_const {V : Type u_1} [NormedAddCommGroup V] [NormedSpace ℝ V] [FiniteDimensional ℝ V] (Jc : V →L[ℝ] V) (hJc : ∀ (v : V), Jc (Jc v) = -v) (x : V) :
    (const Jc hJc).nijenhuis x = 0

    A constant almost complex structure on a finite-dimensional real vector space has vanishing Nijenhuis tensor.