Module

FullTateModule.lean

Nyll.ProCGroups.Abelian.FullTateModule
21 declarations indexed from sourceView source ↗

The full Tate module of an additive commutative group

The full Tate module consists of actual torsion points indexed by positive integers, compatible under multiplication. It is torsion-free: if a positive integer annihilates a compatible family, compatibility with the levels multiplied by that integer makes every coordinate zero.

Each torsion level is given the discrete topology. The induced product subspace topology on the limit is Hausdorff and totally disconnected, and is compact when every actual torsion subgroup is finite.

Declarations

ProCGroups.torsionLevel

The actual subgroup of points annihilated by a positive integer.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
def torsionLevel (n : ℕ+) : AddSubgroup M where
  carrier := {x : M | (n : ℕ) • x = 0}
  zero_mem' := nsmul_zero (n : ℕ)
  add_mem' := by
    intro x y hx hy
    change (n : ℕ) • (x + y) = 0
    rw [nsmul_add, hx, hy, zero_add]
  neg_mem' := by
    intro x hx
    change (n : ℕ) • (-x) = 0
    rw [smul_neg, hx, neg_zero]
ProCGroups.torsionTransition

Multiplication by m maps the actual (n*m)-torsion into the n-torsion.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
def torsionTransition (n m : ℕ+) : torsionLevel M (n * m) →+ torsionLevel M n where
  toFun x := ⟨(m : ℕ) • x.val, by
    change (n : ℕ) • ((m : ℕ) • x.val) = 0
    rw [← mul_nsmul, Nat.mul_comm]
    exact x.property⟩
  map_zero' := by
    apply Subtype.ext
    exact nsmul_zero (m : ℕ)
  map_add' := by
    intro x y
    apply Subtype.ext
    exact nsmul_add x.val y.val (m : ℕ)
ProCGroups.compatibleTorsionFamilies

The subgroup of the product satisfying every multiplication transition.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
def compatibleTorsionFamilies : AddSubgroup (∀ n : ℕ+, torsionLevel M n) where
  carrier := {x | ∀ n m : ℕ+, torsionTransition M n m (x (n * m)) = x n}
  zero_mem' := by
    intro n m
    exact (torsionTransition M n m).map_zero
  add_mem' := by
    intro x y hx hy n m
    change torsionTransition M n m (x (n * m) + y (n * m)) = x n + y n
    rw [map_add, hx n m, hy n m]
  neg_mem' := by
    intro x hx n m
    change torsionTransition M n m (-x (n * m)) = -x n
    rw [map_neg, hx n m]
ProCGroups.FullTateModule

The full Tate module, realized as compatible actual torsion families.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
def FullTateModule : Type u
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
instance : AddCommGroup (FullTateModule M)
ProCGroups.FullTateModule.projection

The canonical projection to an actual torsion subgroup.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
def projection (n : ℕ+) : FullTateModule M →+ torsionLevel M n where
  toFun x := x.val n
  map_zero' := rfl
  map_add' _ _ := rfl
ProCGroups.FullTateModule.evaluation

The n-th torsion point, viewed in the original group.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
def evaluation (n : ℕ+) : FullTateModule M →+ M
theorem

ext

L95 ↗
ProCGroups.FullTateModule.ext

Two full Tate elements agree when their actual torsion points agree.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
theorem ext {x y : FullTateModule M}
    (h : ∀ n : ℕ+, evaluation M n x = evaluation M n y) : x = y
ProCGroups.FullTateModule.evaluation_annihilated

Every projected point is annihilated by its index.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
theorem evaluation_annihilated (x : FullTateModule M) (n : ℕ+) :
    (n : ℕ) • evaluation M n x = 0
ProCGroups.FullTateModule.evaluation_compatible

The compatibility equation holds in the original additive group.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
theorem evaluation_compatible (x : FullTateModule M) (n m : ℕ+) :
    (m : ℕ) • evaluation M (n * m) x = evaluation M n x
ProCGroups.FullTateModule.eq_zero_of_nsmul_eq_zero

No nonzero positive-integer torsion occurs in the constructed full Tate module.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
theorem eq_zero_of_nsmul_eq_zero (x : FullTateModule M) {n : ℕ}
    (hn : 0 < n) (hx : n • x = 0) : x = 0
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
instance : IsAddTorsionFree (FullTateModule M) where
  nsmul_right_injective := by
    intro n hn x y hxy
    change n • x = n • y at hxy
    apply sub_eq_zero.mp
    apply eq_zero_of_nsmul_eq_zero (x - y) (Nat.pos_of_ne_zero hn)
    rw [nsmul_sub, hxy, sub_self]
ProCGroups.FullTateModule.torsionLevelTopology

The chosen topology at a torsion level is discrete, independently of any topology on the original group. It is installed only locally in this module.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
def torsionLevelTopology (n : ℕ+) : TopologicalSpace (torsionLevel M n)
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
instance (n : ℕ+) : DiscreteTopology (torsionLevel M n)

The full Tate topology is the subspace topology of the product of the discrete actual torsion levels.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
local instance (n : ℕ+) : DiscreteTopology (torsionLevel M n) := ⟨rfl⟩
instance : TopologicalSpace (FullTateModule M)
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
local instance (n : ℕ+) : DiscreteTopology (torsionLevel M n) := ⟨rfl⟩
instance : IsTopologicalAddGroup (FullTateModule M)
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
local instance (n : ℕ+) : DiscreteTopology (torsionLevel M n) := ⟨rfl⟩
instance : T2Space (FullTateModule M)
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
local instance (n : ℕ+) : DiscreteTopology (torsionLevel M n) := ⟨rfl⟩
instance : TotallyDisconnectedSpace (FullTateModule M)
ProCGroups.FullTateModule.continuous_projection

Projection to every discrete torsion level is continuous.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
local instance (n : ℕ+) : DiscreteTopology (torsionLevel M n) := ⟨rfl⟩
theorem continuous_projection (n : ℕ+) : Continuous (projection M n)
ProCGroups.FullTateModule.isClosed_compatibleTorsionFamilies

Compatibility cuts out a closed subspace of the discrete-level product.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
local instance (n : ℕ+) : DiscreteTopology (torsionLevel M n) := ⟨rfl⟩
theorem isClosed_compatibleTorsionFamilies :
    IsClosed (compatibleTorsionFamilies M : Set (∀ n : ℕ+, torsionLevel M n))

Finite actual torsion levels make the full Tate module compact.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ProCGroups
universe u
variable (M : Type u) [AddCommGroup M]
namespace FullTateModule
variable {M}
variable (M)
attribute [local instance] torsionLevelTopology
local instance (n : ℕ+) : DiscreteTopology (torsionLevel M n) := ⟨rfl⟩
instance [∀ n : ℕ+, Finite (torsionLevel M n)] : CompactSpace (FullTateModule M)