-
Notifications
You must be signed in to change notification settings - Fork 53
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
* Add ContinuousAlgEquiv * Issue #259: Proof that A_K/K is compact, assuming that A_Q/Q is compact * Issue #259: Proof that A_K/K is compact, assuming that A_Q/Q is compact * Add TODOs * Remove use of basis and try module topology * Some work on module topology * close goals * Remove unncessary defs * Refactor * Remove unnecessary result * Tidy * Remove unnecessary results
- Loading branch information
Showing
11 changed files
with
312 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import Mathlib.Algebra.Algebra.Tower | ||
import Mathlib.RingTheory.AlgebraTower | ||
|
||
def AlgEquiv.extendScalars {A C D : Type*} (B : Type*) [CommSemiring A] [CommSemiring C] | ||
[CommSemiring D] [Algebra A C] [Algebra A D] [CommSemiring B] [Algebra A B] [Algebra B C] | ||
[IsScalarTower A B C] (f : C ≃ₐ[A] D) : | ||
letI := (f.toAlgHom.restrictDomain B).toRingHom.toAlgebra | ||
C ≃ₐ[B] D where | ||
__ := (f.toAlgHom.restrictDomain B).toRingHom.toAlgebra | ||
__ := f | ||
commutes' := fun _ => rfl |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import Mathlib.Algebra.BigOperators.Group.Finset.Basic | ||
import Mathlib.Algebra.BigOperators.Pi | ||
|
||
theorem Fintype.sum_pi_single_pi {α : Type*} {β : α → Type*} [DecidableEq α] [Fintype α] | ||
[(a : α) → AddCommMonoid (β a)] (f : (a : α) → β a) : | ||
∑ (a : α), Pi.single a (f a) = f := by | ||
simp_rw [funext_iff, Fintype.sum_apply] | ||
exact fun _ => Fintype.sum_pi_single _ _ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import Mathlib.LinearAlgebra.Dimension.Constructions | ||
import Mathlib.LinearAlgebra.TensorProduct.Pi | ||
import FLT.Mathlib.Algebra.BigOperators.Group.Finset.Basic | ||
import FLT.Mathlib.RingTheory.TensorProduct.Pi | ||
|
||
open scoped TensorProduct | ||
|
||
noncomputable def Module.Finite.equivPi (R M : Type*) [Ring R] [StrongRankCondition R] | ||
[AddCommGroup M] [Module R M] [Module.Free R M] [Module.Finite R M] : | ||
M ≃ₗ[R] Fin (Module.finrank R M) → R := | ||
LinearEquiv.ofFinrankEq _ _ <| by rw [Module.finrank_pi, Fintype.card_fin] | ||
|
||
noncomputable abbrev TensorProduct.AlgebraTensorModule.finiteEquivPi (R M N : Type*) [CommRing R] | ||
[CommSemiring N] [CommRing M] [Algebra R N] [Module R M] [Module.Free R M] [Module.Finite R M] | ||
[StrongRankCondition R] : | ||
N ⊗[R] M ≃ₗ[N] Fin (Module.finrank R M) → N := | ||
(TensorProduct.AlgebraTensorModule.congr (LinearEquiv.refl N N) (Module.Finite.equivPi _ _)).trans | ||
(TensorProduct.piScalarRight _ _ _ _) | ||
|
||
theorem TensorProduct.AlgebraTensorModule.finiteEquivPi_symm_apply (R M N : Type*) [Field R] | ||
[CommSemiring N] [CommRing M] [Algebra R N] [Module R M] [Module.Free R M] [Module.Finite R M] | ||
[StrongRankCondition R] | ||
(x : Fin (Module.finrank R M) → R) : | ||
(finiteEquivPi R M N).symm (fun i => algebraMap R N (x i)) = | ||
1 ⊗ₜ[R] (Module.Finite.equivPi R M).symm x := by | ||
simp [Algebra.TensorProduct.piScalarRight_symm_apply_of_algebraMap, Fintype.sum_pi_single_pi] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import Mathlib.RingTheory.TensorProduct.Pi | ||
|
||
theorem Algebra.TensorProduct.piScalarRight_symm_apply_of_algebraMap (R S N ι : Type*) | ||
[CommSemiring R] [CommSemiring S] [Algebra R S] [Semiring N] [Algebra R N] [Algebra S N] | ||
[IsScalarTower R S N] [Fintype ι] [DecidableEq ι] (x : ι → R) : | ||
(TensorProduct.piScalarRight R S N ι).symm (fun i => algebraMap _ _ (x i)) = | ||
1 ⊗ₜ[R] (∑ i, Pi.single i (x i)) := by | ||
simp [LinearEquiv.symm_apply_eq, algebraMap_eq_smul_one] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/- | ||
Copyright (c) 2024 Salvatore Mercuri. All rights reserved. | ||
Released under Apache 2.0 license as described in the file LICENSE. | ||
Authors: Salvatore Mercuri | ||
-/ | ||
import Mathlib.Topology.Algebra.Algebra.Equiv | ||
import Mathlib.Topology.Algebra.Algebra | ||
import Mathlib.Topology.Algebra.Module.Equiv | ||
|
||
/-! | ||
# Topological (sub)algebras | ||
This file contains an API for `ContinuousAlgEquiv`. | ||
-/ | ||
|
||
open scoped Topology | ||
|
||
|
||
namespace ContinuousAlgEquiv | ||
|
||
variable {R A B C : Type*} | ||
[CommSemiring R] [Semiring A] [TopologicalSpace A] [Semiring B] | ||
[TopologicalSpace B] [Semiring C] [TopologicalSpace C] [Algebra R A] [Algebra R B] | ||
[Algebra R C] | ||
|
||
@[coe] | ||
def toContinuousLinearEquiv (e : A ≃A[R] B) : A ≃L[R] B where | ||
__ := e.toLinearEquiv | ||
continuous_toFun := e.continuous_toFun | ||
continuous_invFun := e.continuous_invFun | ||
|
||
theorem toContinuousLinearEquiv_apply (e : A ≃A[R] B) (a : A) : | ||
e.toContinuousLinearEquiv a = e a := rfl | ||
|
||
end ContinuousAlgEquiv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import Mathlib.Topology.Algebra.ContinuousMonoidHom | ||
import Mathlib.Topology.Algebra.Module.Equiv | ||
import FLT.Mathlib.Topology.Algebra.Module.Equiv | ||
import FLT.Mathlib.Topology.Algebra.Module.Quotient | ||
|
||
def ContinuousAddEquiv.toIntContinuousLinearEquiv {M M₂ : Type*} [AddCommGroup M] | ||
[TopologicalSpace M] [AddCommGroup M₂] [TopologicalSpace M₂] (e : M ≃ₜ+ M₂) : | ||
M ≃L[ℤ] M₂ where | ||
__ := e.toIntLinearEquiv | ||
continuous_toFun := e.continuous | ||
continuous_invFun := e.continuous_invFun | ||
|
||
def ContinuousAddEquiv.quotientPi {ι : Type*} {G : ι → Type*} [(i : ι) → AddCommGroup (G i)] | ||
[(i : ι) → TopologicalSpace (G i)] | ||
[(i : ι) → TopologicalAddGroup (G i)] | ||
[Fintype ι] (p : (i : ι) → AddSubgroup (G i)) [DecidableEq ι] : | ||
((i : ι) → G i) ⧸ AddSubgroup.pi (_root_.Set.univ) p ≃ₜ+ ((i : ι) → G i ⧸ p i) := | ||
(Submodule.quotientPiContinuousLinearEquiv | ||
(fun (i : ι) => AddSubgroup.toIntSubmodule (p i))).toContinuousAddEquiv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import Mathlib.Topology.Algebra.Group.Quotient | ||
import Mathlib.Topology.Algebra.ContinuousMonoidHom | ||
import FLT.Mathlib.Topology.Algebra.ContinuousMonoidHom | ||
import FLT.Mathlib.Topology.Algebra.Module.Quotient | ||
import FLT.Mathlib.Topology.Algebra.Module.Equiv | ||
|
||
def QuotientAddGroup.continuousAddEquiv (G H : Type*) [AddCommGroup G] [AddCommGroup H] [TopologicalSpace G] | ||
[TopologicalSpace H] (G' : AddSubgroup G) (H' : AddSubgroup H) [G'.Normal] [H'.Normal] | ||
(e : G ≃ₜ+ H) (h : AddSubgroup.map e G' = H') : | ||
G ⧸ G' ≃ₜ+ H ⧸ H' := | ||
(Submodule.Quotient.continuousLinearEquiv _ _ (AddSubgroup.toIntSubmodule G') | ||
(AddSubgroup.toIntSubmodule H') e.toIntContinuousLinearEquiv | ||
(congrArg AddSubgroup.toIntSubmodule h)).toContinuousAddEquiv |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import Mathlib.Topology.Algebra.Module.Equiv | ||
import Mathlib.Topology.Algebra.ContinuousMonoidHom | ||
|
||
def ContinuousLinearEquiv.toContinuousAddEquiv | ||
{R₁ R₂ : Type*} [Semiring R₁] [Semiring R₂] {σ₁₂ : R₁ →+* R₂} {σ₂₁ : R₂ →+* R₁} | ||
[RingHomInvPair σ₁₂ σ₂₁] [RingHomInvPair σ₂₁ σ₁₂] {M₁ M₂ : Type*} [TopologicalSpace M₁] | ||
[AddCommMonoid M₁] [TopologicalSpace M₂] [AddCommMonoid M₂] [Module R₁ M₁] [Module R₂ M₂] | ||
(e : M₁ ≃SL[σ₁₂] M₂) : | ||
M₁ ≃ₜ+ M₂ where | ||
__ := e.toLinearEquiv.toAddEquiv | ||
continuous_invFun := e.symm.continuous | ||
|
||
@[simps!] | ||
def ContinuousLinearEquiv.restrictScalars (R : Type*) {S M M₂ : Type*} | ||
[Semiring R] [Semiring S] [AddCommMonoid M] [AddCommMonoid M₂] [Module R M] [Module R M₂] | ||
[Module S M] [Module S M₂] [LinearMap.CompatibleSMul M M₂ R S] [TopologicalSpace M] | ||
[TopologicalSpace M₂] (f : M ≃L[S] M₂) : | ||
M ≃L[R] M₂ where | ||
__ := f.toLinearEquiv.restrictScalars R | ||
continuous_toFun := f.continuous_toFun | ||
continuous_invFun := f.continuous_invFun |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
import Mathlib.LinearAlgebra.Quotient.Pi | ||
import Mathlib.Topology.Algebra.Module.Equiv | ||
|
||
def Submodule.Quotient.continuousLinearEquiv {R : Type*} [Ring R] (G H : Type*) [AddCommGroup G] | ||
[Module R G] [AddCommGroup H] [Module R H] [TopologicalSpace G] [TopologicalSpace H] | ||
(G' : Submodule R G) (H' : Submodule R H) (e : G ≃L[R] H) (h : Submodule.map e G' = H') : | ||
(G ⧸ G') ≃L[R] (H ⧸ H') where | ||
toLinearEquiv := Submodule.Quotient.equiv G' H' e h | ||
continuous_toFun := by | ||
apply continuous_quot_lift | ||
simp only [LinearMap.toAddMonoidHom_coe, LinearMap.coe_comp] | ||
exact Continuous.comp continuous_quot_mk e.continuous | ||
continuous_invFun := by | ||
apply continuous_quot_lift | ||
simp only [LinearMap.toAddMonoidHom_coe, LinearMap.coe_comp] | ||
exact Continuous.comp continuous_quot_mk e.continuous_invFun | ||
|
||
def Submodule.quotientPiContinuousLinearEquiv {R ι : Type*} [CommRing R] {G : ι → Type*} | ||
[(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)] [(i : ι) → TopologicalSpace (G i)] | ||
[(i : ι) → TopologicalAddGroup (G i)] [Fintype ι] [DecidableEq ι] | ||
(p : (i : ι) → Submodule R (G i)) : | ||
(((i : ι) → G i) ⧸ Submodule.pi Set.univ p) ≃L[R] ((i : ι) → G i ⧸ p i) where | ||
toLinearEquiv := Submodule.quotientPi p | ||
continuous_toFun := by | ||
apply Continuous.quotient_lift | ||
exact continuous_pi (fun i => Continuous.comp continuous_quot_mk (continuous_apply _)) | ||
continuous_invFun := by | ||
rw [show (quotientPi p).invFun = fun a => (quotientPi p).invFun a from rfl] | ||
simp [quotientPi, piQuotientLift] | ||
refine continuous_finset_sum _ (fun i _ => ?_) | ||
apply Continuous.comp ?_ (continuous_apply _) | ||
apply Continuous.quotient_lift <| Continuous.comp (continuous_quot_mk) (continuous_single _) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters