Documentation

TauCeti.Geometry.Hodge.Conjugation

Conjugation and maps on complexifications #

This file packages a conjugation on a complex vector space as a conjugate-linear involution and bundles the canonical conjugation on the tensor complexification of a real vector space. It also constructs the canonical conjugation on any abstract complexification of an integral module using Mathlib's IsBaseChange interface: it transports coordinatewise conjugation on ℂ ⊗[ℤ] V to an arbitrary complex base-change model and is uniquely characterized by fixing the image of V. The same interface canonically complexifies integral linear maps between abstract complexification models.

Main declarations #

The base-change design follows the discussion by Johan Commelin, Andrew Yang, Kevin Buzzard, and Joël Riou in the #mathlib4 Zulip thread Complexifications with a view towards Hodge theory. The opposed-filtration formulation that consumes this conjugation is Deligne's, Théorie de Hodge II, §1.2.1.

A conjugation on a complex vector space: a conjugate-linear involution.

Instances For
    theorem TauCeti.Hodge.Conjugation.ext {W : Type u} {inst✝ : AddCommGroup W} {inst✝¹ : Module ℂ W} {x y : Conjugation W} (toEquiv : x.toEquiv = y.toEquiv) :
    x = y
    theorem TauCeti.Hodge.Conjugation.ext_iff {W : Type u} {inst✝ : AddCommGroup W} {inst✝¹ : Module ℂ W} {x y : Conjugation W} :

    The canonical conjugation on the complexification of a real vector space, bundled as a conjugate-linear involution.

    Instances For
      @[simp]

      The bundled canonical conjugation agrees with tensor conjugation on every vector.

      Canonical conjugation on a complexification conjugates the complex coefficient of a pure tensor and fixes its real factor.

      @[simp]

      Canonical conjugation carries the z-eigenspace of a complexified real-linear endomorphism to its conjugate-eigenvalue eigenspace.

      @[simp]

      The inverse of a conjugation is the conjugation itself.

      @[simp]
      theorem TauCeti.Hodge.Conjugation.apply_apply {W : Type u} [AddCommGroup W] [Module ℂ W] (ω : Conjugation W) (x : W) :
      ω.toEquiv (ω.toEquiv x) = x

      Applying a conjugation twice returns the original vector.

      def TauCeti.Hodge.Conjugation.tensorProduct {W₁ : Type u} {W₂ : Type v} [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] (ω₁ : Conjugation W₁) (ω₂ : Conjugation W₂) :

      The tensor product of two conjugate-linear involutions.

      Instances For
        @[simp]
        theorem TauCeti.Hodge.Conjugation.tensorProduct_toEquiv_tmul {W₁ : Type u} {W₂ : Type v} [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] (ω₁ : Conjugation W₁) (ω₂ : Conjugation W₂) (x : W₁) (y : W₂) :
        (ω₁.tensorProduct ω₂).toEquiv (x ⊗ₜ[ℂ] y) = ω₁.toEquiv x ⊗ₜ[ℂ] ω₂.toEquiv y

        Tensor-product conjugation acts componentwise on pure tensors.

        def TauCeti.Hodge.Conjugation.internalHom {W₁ : Type u} {W₂ : Type v} [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] (ω₁ : Conjugation W₁) (ω₂ : Conjugation W₂) :

        The conjugation on the internal hom of two complex vector spaces with conjugation. It sends f : W₁ →ₗ[ℂ] W₂ to x ↦ ω₂ (f (ω₁ x)).

        Instances For
          @[simp]
          theorem TauCeti.Hodge.Conjugation.internalHom_toEquiv_apply_apply {W₁ : Type u} {W₂ : Type v} [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] (ω₁ : Conjugation W₁) (ω₂ : Conjugation W₂) (f : W₁ →ₗ[ℂ] W₂) (x : W₁) :
          ((ω₁.internalHom ω₂).toEquiv f) x = ω₂.toEquiv (f (ω₁.toEquiv x))

          Conjugation on an internal hom conjugates the input and output.

          theorem TauCeti.Hodge.Conjugation.internalHom_toEquiv_eq_self_iff {W₁ : Type u} {W₂ : Type v} [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] (ω₁ : Conjugation W₁) (ω₂ : Conjugation W₂) (f : W₁ →ₗ[ℂ] W₂) :
          (ω₁.internalHom ω₂).toEquiv f = f ↔ ∀ (x : W₁), f (ω₁.toEquiv x) = ω₂.toEquiv (f x)

          A complex-linear map is fixed by the internal-hom conjugation exactly when it intertwines the two conjugations.

          @[simp]

          Mapping a complex subspace twice by a conjugation returns the original subspace.

          The conjugate filtration obtained by mapping each step through a conjugation.

          Instances For

            A conjugate filtration step is the image of the original step under conjugation.

            Conjugating an antitone filtration produces an antitone filtration.

            @[simp]
            theorem TauCeti.Hodge.Conjugation.mem_conjFiltration_iff {W : Type u} [AddCommGroup W] [Module ℂ W] (ω : Conjugation W) (F : ℤ → Submodule ℂ W) (p : ℤ) (x : W) :
            x ∈ ω.conjFiltration F p ↔ ω.toEquiv x ∈ F p

            Membership in a conjugate filtration step is detected by applying the conjugation.

            @[simp]

            Applying conjugation to a conjugate filtration step recovers the original step.

            theorem TauCeti.Hodge.Conjugation.map_conjFiltration_le {W : Type u} [AddCommGroup W] [Module ℂ W] {W' : Type v} [AddCommGroup W'] [Module ℂ W'] (ω : Conjugation W) (ω' : Conjugation W') (F : ℤ → Submodule ℂ W) (F' : ℤ → Submodule ℂ W') (f : W →ₗ[ℂ] W') (hcomm : ∀ (x : W), f (ω.toEquiv x) = ω'.toEquiv (f x)) {p : ℤ} (hF : Submodule.map f (F p) ≤ F' p) :

            A linear map commuting with two conjugations carries the conjugate of a preserved filtration step into the corresponding conjugate filtration step.

            def TauCeti.Hodge.Conjugation.restrict {W : Type u} [AddCommGroup W] [Module ℂ W] (ω : Conjugation W) {U : Submodule ℂ W} (hU : ∀ x ∈ U, ω.toEquiv x ∈ U) :

            The conjugation induced on a complex subspace stable under a given conjugation.

            Instances For
              @[simp]
              theorem TauCeti.Hodge.Conjugation.restrict_toEquiv_apply {W : Type u} [AddCommGroup W] [Module ℂ W] (ω : Conjugation W) {U : Submodule ℂ W} (hU : ∀ x ∈ U, ω.toEquiv x ∈ U) (x : ↥U) :
              ↑((ω.restrict hU).toEquiv x) = ω.toEquiv ↑x

              A restricted conjugation acts as the ambient one.

              @[simp]

              Conjugating inside a stable subspace is conjugating in the ambient space: the image of an intersection with the subspace under the restricted conjugation is the intersection with the conjugate subspace.

              theorem TauCeti.Hodge.Conjugation.map_comap_eq_comap_map {W : Type u} [AddCommGroup W] [Module ℂ W] {W' : Type v} [AddCommGroup W'] [Module ℂ W'] (ω : Conjugation W) (ω' : Conjugation W') (f : W →ₗ[ℂ] W') (hf : ∀ (x : W), f (ω.toEquiv x) = ω'.toEquiv (f x)) (A : Submodule ℂ W') :

              A linear map intertwining two conjugations exchanges conjugating a preimage with taking the preimage of the conjugate.

              def TauCeti.Hodge.Conjugation.quotient {W : Type u} [AddCommGroup W] [Module ℂ W] (ω : Conjugation W) {U : Submodule ℂ W} (hU : ∀ x ∈ U, ω.toEquiv x ∈ U) :

              The conjugation induced on the quotient of a complex vector space by a stable subspace.

              Instances For
                @[simp]

                The induced conjugation on a quotient acts on classes through the ambient conjugation.

                The twisted transpose of a conjugation ω: a functional φ acts by conjugating the values of φ along ω. It is again an involution, so it packages as a conjugation on the dual space; see TauCeti.Hodge.Conjugation.dual_toEquiv_apply for its pointwise description.

                Instances For
                  @[simp]
                  theorem TauCeti.Hodge.Conjugation.dual_toEquiv_apply {W : Type u} [AddCommGroup W] [Module ℂ W] (ω : Conjugation W) (φ : Module.Dual ℂ W) (v : W) :
                  (ω.dual.toEquiv φ) v = star (φ (ω.toEquiv v))

                  Pointwise description of the dual conjugation.

                  @[simp]

                  A conjugation carries dual annihilators to dual annihilators of conjugated subspaces.

                  @[reducible, inline]

                  The canonical complexification ℂ ⊗[ℤ] V of an integral module.

                  Instances For

                    The canonical map from an integral module to its tensor-product complexification.

                    Instances For

                      The tensor-product complexification satisfies the abstract base-change interface.

                      Lattice-induced conjugation on the tensor model ℂ ⊗[ℤ] V, acting by complex conjugation on the scalar tensor factor and by the identity on the integral module.

                      Instances For
                        @[simp]

                        Conjugation on the tensor model conjugates the scalar in a pure tensor.

                        @[simp]

                        Conjugation on the tensor model fixes the image of the integral module.

                        Conjugation on the tensor model is involutive.

                        @[simp]

                        Applying conjugation on the tensor model twice returns the original vector.

                        noncomputable def TauCeti.Hodge.latticeConj {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) :
                        Vℂ →ₗ⋆[ℂ] Vℂ

                        Lattice-induced conjugation on an abstract complex base-change model.

                        Instances For
                          @[simp]
                          theorem TauCeti.Hodge.latticeConj_ι {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) (v : V) :
                          (latticeConj hℂ) (ιℂ v) = ιℂ v

                          Abstract lattice-induced conjugation fixes the image of the integral module.

                          theorem TauCeti.Hodge.latticeConj_involutive {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) :

                          Abstract lattice-induced conjugation is involutive.

                          @[simp]
                          theorem TauCeti.Hodge.latticeConj_apply_apply {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) (x : Vℂ) :
                          (latticeConj hℂ) ((latticeConj hℂ) x) = x

                          Applying abstract lattice-induced conjugation twice returns the original vector.

                          theorem TauCeti.Hodge.latticeConj_unique {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) (c : Vℂ →ₗ⋆[ℂ] Vℂ) (hc : ∀ (v : V), c (ιℂ v) = ιℂ v) :
                          c = latticeConj hℂ

                          Lattice-induced conjugation is the unique conjugate-linear map on an abstract complexification that fixes every integral vector.

                          On the canonical tensor-product model, abstract lattice-induced conjugation is the concrete tensor map.

                          noncomputable def TauCeti.Hodge.latticeConjugation {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) :

                          Lattice-induced conjugation on an abstract complexification, bundled as a conjugation.

                          Instances For
                            @[simp]
                            theorem TauCeti.Hodge.latticeConjugation_toEquiv_apply {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) (x : Vℂ) :

                            The equivalence underlying bundled lattice conjugation applies as latticeConj.

                            theorem TauCeti.Hodge.latticeConjugation_toLinearMap {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) :

                            The linear map underlying bundled lattice conjugation is latticeConj, bridging the bundled spelling used by HodgeStructureOn and the bare spelling used by the base-change API. This is not a simp lemma: rewriting with it discards the equivalence, and with it simp's ability to see that conjugating a subspace preserves ⊤.

                            theorem TauCeti.Hodge.latticeConjugation_toEquiv_ι {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) (v : V) :
                            (latticeConjugation hℂ).toEquiv (ιℂ v) = ιℂ v

                            Bundled lattice conjugation fixes the image of the integral module.

                            noncomputable def TauCeti.Hodge.integralMapToComplex {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (f : V₁ →ₗ[ℤ] V₂) :
                            W₁ →ₗ[ℂ] W₂

                            The complexification of an integral linear map between abstract complexification models.

                            Instances For
                              @[simp]
                              theorem TauCeti.Hodge.integralMapToComplex_apply_ι {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (f : V₁ →ₗ[ℤ] V₂) (x : V₁) :
                              (integralMapToComplex h₁ ι₂ f) (ι₁ x) = ι₂ (f x)

                              Complexification agrees with the target lattice map on integral vectors.

                              noncomputable def TauCeti.Hodge.homLatticeMap {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) :
                              (V₁ →ₗ[ℤ] V₂) →ₗ[ℤ] W₁ →ₗ[ℂ] W₂

                              The integral structure map φ ↦ integralMapToComplex h₁ ι₂ φ of the space of complex-linear maps between two complexifications: an integral linear map between the lattices extends complex-linearly to the complexifications (TauCeti.Hodge.homLatticeMap_apply).

                              It is Mathlib's IsBaseChange.linearMapLeftRightHom, restated through AddMonoidHom.toIntLinearMap so that both spaces of linear maps carry their canonical ℤ-module structures: a space of linear maps also carries the ℤ-module structure of LinearMap.module, which is equal but not reducibly defeq to the canonical one that the lattice API of this file is stated for.

                              Instances For
                                @[simp]
                                theorem TauCeti.Hodge.homLatticeMap_apply {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (f : V₁ →ₗ[ℤ] V₂) :
                                (homLatticeMap h₁ ι₂) f = integralMapToComplex h₁ ι₂ f

                                The structure map of a space of linear maps between complexifications sends an integral linear map to its complexification.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_id {V₁ : Type u₁} {W₁ : Type v₁} [AddCommGroup V₁] [AddCommGroup W₁] [Module ℂ W₁] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) :

                                Complexification sends the identity integral map to the identity complex map.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_zero {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) :
                                integralMapToComplex h₁ ι₂ 0 = 0

                                Complexification sends the zero integral map to the zero complex map.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_add {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (f g : V₁ →ₗ[ℤ] V₂) :
                                integralMapToComplex h₁ ι₂ (f + g) = integralMapToComplex h₁ ι₂ f + integralMapToComplex h₁ ι₂ g

                                Complexification preserves addition of integral linear maps.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_neg {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (f : V₁ →ₗ[ℤ] V₂) :
                                integralMapToComplex h₁ ι₂ (-f) = -integralMapToComplex h₁ ι₂ f

                                Complexification preserves negation of integral linear maps.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_sub {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (f g : V₁ →ₗ[ℤ] V₂) :
                                integralMapToComplex h₁ ι₂ (f - g) = integralMapToComplex h₁ ι₂ f - integralMapToComplex h₁ ι₂ g

                                Complexification preserves subtraction of integral linear maps.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_nsmul {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (k : ℕ) (f : V₁ →ₗ[ℤ] V₂) :
                                integralMapToComplex h₁ ι₂ (k • f) = k • integralMapToComplex h₁ ι₂ f

                                Complexification preserves natural-number multiples of integral linear maps.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_zsmul {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} (h₁ : IsBaseChange ℂ ι₁) (ι₂ : V₂ →ₗ[ℤ] W₂) (k : ℤ) (f : V₁ →ₗ[ℤ] V₂) :
                                integralMapToComplex h₁ ι₂ (k • f) = k • integralMapToComplex h₁ ι₂ f

                                Complexification preserves integer multiples of integral linear maps.

                                theorem TauCeti.Hodge.integralMapToComplex_comp {V₁ : Type u₁} {V₂ : Type u₂} {V₃ : Type u₃} {W₁ : Type v₁} {W₂ : Type v₂} {W₃ : Type v₃} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup V₃] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] [AddCommGroup W₃] [Module ℂ W₃] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) (ι₃ : V₃ →ₗ[ℤ] W₃) (f : V₁ →ₗ[ℤ] V₂) (g : V₂ →ₗ[ℤ] V₃) :

                                Complexification preserves composition of integral linear maps.

                                theorem TauCeti.Hodge.integralMapToComplex_injective {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) {f : V₁ →ₗ[ℤ] V₂} (hf : Function.Injective ⇑f) :

                                Complexification preserves injectivity of integral linear maps, because ℂ is flat over ℤ.

                                @[simp]
                                theorem TauCeti.Hodge.integralMapToComplex_commutes_conj {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) (f : V₁ →ₗ[ℤ] V₂) (x : W₁) :
                                (integralMapToComplex h₁ ι₂ f) ((latticeConj h₁) x) = (latticeConj h₂) ((integralMapToComplex h₁ ι₂ f) x)

                                The complexification of an integral map commutes with lattice-induced conjugation.

                                theorem TauCeti.Hodge.Conjugation.map_prod {W : Type u_3} {W' : Type u_4} [AddCommGroup W] [Module ℂ W] [AddCommGroup W'] [Module ℂ W'] {ω : Conjugation W} {ω' : Conjugation W'} {Ω : Conjugation (W × W')} (hΩ : ∀ (x : W × W'), Ω.toEquiv x = (ω.toEquiv x.1, ω'.toEquiv x.2)) (U : Submodule ℂ W) (U' : Submodule ℂ W') :
                                Submodule.map (↑Ω.toEquiv) (U.prod U') = (Submodule.map (↑ω.toEquiv) U).prod (Submodule.map (↑ω'.toEquiv) U')

                                A conjugation acting componentwise on a product carries a product subspace to the product of the conjugate subspaces.

                                The hypothesis is what TauCeti.Hodge.latticeConjugation_prodMap_toEquiv_apply supplies for the canonical conjugation of a product of complexifications.

                                @[simp]
                                theorem TauCeti.Hodge.latticeConj_prodMap {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (hℂ : IsBaseChange ℂ ιℂ) (h'ℂ : IsBaseChange ℂ ι'ℂ) (x : Vℂ × V'ℂ) :
                                (latticeConj ⋯) x = ((latticeConj hℂ) x.1, (latticeConj h'ℂ) x.2)

                                Lattice conjugation acts componentwise on a product of complexifications.

                                theorem TauCeti.Hodge.latticeConjugation_prodMap_toEquiv_apply {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (hℂ : IsBaseChange ℂ ιℂ) (h'ℂ : IsBaseChange ℂ ι'ℂ) (x : Vℂ × V'ℂ) :

                                The bundled lattice conjugation of a product of complexifications acts componentwise.

                                @[simp]
                                theorem TauCeti.Hodge.map_latticeConj_prod {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (hℂ : IsBaseChange ℂ ιℂ) (h'ℂ : IsBaseChange ℂ ι'ℂ) (U : Submodule ℂ Vℂ) (U' : Submodule ℂ V'ℂ) :

                                Conjugation of a product subspace is the product of the conjugate subspaces.

                                noncomputable def TauCeti.Hodge.tensorLatticeMap {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] (ιℂ : V →ₗ[ℤ] Vℂ) {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] (ι'ℂ : V' →ₗ[ℤ] V'ℂ) :

                                The integral structure map v ⊗ v' ↦ ιℂ v ⊗ ι'ℂ v' of a tensor product of two complexifications.

                                It is the map of IsBaseChange.tensorProduct, restated through AddMonoidHom.toIntLinearMap so that both sides carry their canonical ℤ-module structures: a tensor product also carries the ℤ-module structure induced from a factor, which is equal but not reducibly defeq to the canonical one that the lattice API of this file is stated for.

                                Instances For
                                  @[simp]
                                  theorem TauCeti.Hodge.tensorLatticeMap_tmul {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (v : V) (v' : V') :
                                  (tensorLatticeMap ιℂ ι'ℂ) (v ⊗ₜ[ℤ] v') = ιℂ v ⊗ₜ[ℂ] ι'ℂ v'

                                  The structure map of a tensor product of complexifications on a pure tensor.

                                  theorem TauCeti.Hodge.isBaseChange_tensorLatticeMap {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (hℂ : IsBaseChange ℂ ιℂ) (h'ℂ : IsBaseChange ℂ ι'ℂ) :

                                  The tensor product of two complexifications is a complexification of the tensor product of the two lattices.

                                  theorem TauCeti.Hodge.tensorLatticeMap_injective {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} [Module.Flat ℤ (TensorProduct ℤ V V')] (hℂ : IsBaseChange ℂ ιℂ) (h'ℂ : IsBaseChange ℂ ι'ℂ) :

                                  A flat tensor product lattice embeds in the tensor product of its complexifications.

                                  @[simp]
                                  theorem TauCeti.Hodge.latticeConj_tensorLatticeMap_tmul {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (hℂ : IsBaseChange ℂ ιℂ) (h'ℂ : IsBaseChange ℂ ι'ℂ) (x : Vℂ) (y : V'ℂ) :

                                  Lattice conjugation of a tensor product of complexifications conjugates both factors of a pure tensor.

                                  theorem TauCeti.Hodge.latticeConjugation_tensorProduct {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (hℂ : IsBaseChange ℂ ιℂ) (h'ℂ : IsBaseChange ℂ ι'ℂ) :

                                  The lattice conjugation of a tensor product of complexifications is the tensor product of the two lattice conjugations.

                                  noncomputable def TauCeti.Hodge.dualLatticeMap {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) :

                                  The integral structure map f ↦ (ιℂ v ↦ f v) of the complex dual of a complexification: an integral functional on the lattice extends complex-linearly to the complexification.

                                  It is Mathlib's IsBaseChange.toDual, restated through AddMonoidHom.toIntLinearMap so that the dual space carries its canonical ℤ-module structure: the space of complex functionals also carries the ℤ-module structure of LinearMap.module, which is equal but not reducibly defeq to the canonical one that the lattice API of this file is stated for.

                                  Instances For
                                    @[simp]
                                    theorem TauCeti.Hodge.dualLatticeMap_apply_ι {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} (hℂ : IsBaseChange ℂ ιℂ) (f : Module.Dual ℤ V) (v : V) :
                                    ((dualLatticeMap hℂ) f) (ιℂ v) = ↑(f v)

                                    The extension of an integral functional takes the given integer values on integral vectors.

                                    The twisted transpose of the lattice conjugation fixes the extension of every integral functional.

                                    The complex dual of a complexification of a finite free lattice is a complexification of the dual lattice.

                                    @[simp]
                                    theorem TauCeti.Hodge.latticeConj_dualLatticeMap_apply {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} [Module.Free ℤ V] [Module.Finite ℤ V] (hℂ : IsBaseChange ℂ ιℂ) (φ : Module.Dual ℂ Vℂ) (x : Vℂ) :
                                    ((latticeConj ⋯) φ) x = star (φ ((latticeConj hℂ) x))

                                    Lattice conjugation on the complex dual of a complexification is the twisted transpose of the lattice conjugation: it conjugates the value of a functional at the conjugate vector.

                                    The lattice conjugation of the complex dual of a complexification is the twisted transpose of the lattice conjugation.

                                    @[simp]
                                    theorem TauCeti.Hodge.integralMapToComplex_dualMap {V : Type u} {Vℂ : Type v} [AddCommGroup V] [AddCommGroup Vℂ] [Module ℂ Vℂ] {ιℂ : V →ₗ[ℤ] Vℂ} [Module.Free ℤ V] [Module.Finite ℤ V] {V' : Type u_1} {V'ℂ : Type u_2} [AddCommGroup V'] [AddCommGroup V'ℂ] [Module ℂ V'ℂ] {ι'ℂ : V' →ₗ[ℤ] V'ℂ} (h'ℂ : IsBaseChange ℂ ι'ℂ) (hℂ : IsBaseChange ℂ ιℂ) (f : V' →ₗ[ℤ] V) :

                                    Complexifying the transpose of an integral linear map gives the transpose of its complexification.

                                    theorem TauCeti.Hodge.isBaseChange_homLatticeMap {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} [Module.Free ℤ V₁] [Module.Finite ℤ V₁] (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) :

                                    The space of complex-linear maps between two complexifications is a complexification of the space of integral linear maps between the lattices, when the source lattice is finite free.

                                    @[simp]
                                    theorem TauCeti.Hodge.integralMapToComplex_dualTensorHom {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} [Module.Free ℤ V₁] [Module.Finite ℤ V₁] (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) :

                                    Complexifying the integral contraction V* ⊗ W → Hom(V, W) gives the complex contraction between the complexifications.

                                    @[simp]
                                    theorem TauCeti.Hodge.integralMapToComplex_dualTensorHomEquiv_symm {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} [Module.Free ℤ V₁] [Module.Finite ℤ V₁] [Module.Finite ℂ W₁] (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) :

                                    Complexifying the inverse integral contraction gives the inverse complex contraction.

                                    theorem TauCeti.Hodge.latticeConj_homLatticeMap_apply {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} [Module.Free ℤ V₁] [Module.Finite ℤ V₁] (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) (φ : W₁ →ₗ[ℂ] W₂) (x : W₁) :
                                    ((latticeConj ⋯) φ) x = (latticeConj h₂) (φ ((latticeConj h₁) x))

                                    Lattice conjugation on the space of complex-linear maps between two complexifications conjugates the input and the output of a map.

                                    theorem TauCeti.Hodge.latticeConjugation_internalHom {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} [Module.Free ℤ V₁] [Module.Finite ℤ V₁] (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) :

                                    The lattice conjugation of the space of complex-linear maps between two complexifications is the internal-hom conjugation of the two lattice conjugations.

                                    theorem TauCeti.Hodge.integralMapToComplex_lcomp_comp_llcomp {V₁ : Type u₁} {V₂ : Type u₂} {W₁ : Type v₁} {W₂ : Type v₂} [AddCommGroup V₁] [AddCommGroup V₂] [AddCommGroup W₁] [Module ℂ W₁] [AddCommGroup W₂] [Module ℂ W₂] {ι₁ : V₁ →ₗ[ℤ] W₁} {ι₂ : V₂ →ₗ[ℤ] W₂} [Module.Free ℤ V₁] [Module.Finite ℤ V₁] {V₃ : Type u₃} {V₄ : Type u₄} {W₃ : Type v₃} {W₄ : Type v₄} [AddCommGroup V₃] [AddCommGroup V₄] [AddCommGroup W₃] [Module ℂ W₃] [AddCommGroup W₄] [Module ℂ W₄] {ι₃ : V₃ →ₗ[ℤ] W₃} (h₁ : IsBaseChange ℂ ι₁) (h₂ : IsBaseChange ℂ ι₂) (h₃ : IsBaseChange ℂ ι₃) (ι₄ : V₄ →ₗ[ℤ] W₄) (f : V₃ →ₗ[ℤ] V₁) (g : V₂ →ₗ[ℤ] V₄) :
                                    integralMapToComplex ⋯ (homLatticeMap h₃ ι₄) (LinearMap.lcomp ℤ V₄ f ∘ₗ (LinearMap.llcomp ℤ V₁ V₂ V₄) g) = LinearMap.lcomp ℂ W₄ (integralMapToComplex h₃ ι₁ f) ∘ₗ (LinearMap.llcomp ℂ W₁ W₂ W₄) (integralMapToComplex h₂ ι₄ g)

                                    Complexifying the map φ ↦ g ∘ φ ∘ f of pre- and post-composition by integral linear maps gives pre- and post-composition by their complexifications.