Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
universe u v
namespace LubinTate
open LocalFieldTheory.DiscreteValuationField
open LocalFieldTheory.DiscreteValuationField.CompleteDVF
open LocalFieldTheory.DiscreteValuationField.Examples.Qp
open ValuationTheory.DiscreteValuationField
open SameUniformizer
variable {K : Type u} [Field K]
attribute [local instance]
padicMultiplicativeLevelCoefficientUniformSpace
padicMultiplicativeLevelTargetWithIdeal
padicMultiplicativeLevelTargetTopologicalSpace
padicMultiplicativeLevelTargetCompleteSpace
padicMultiplicativeLevelTargetT2Spacetheorem padicMultiplicativeScalarEndomorphism_nat
(p : ℕ) [Fact p.Prime] (m : ℕ) :
recursiveIntertwiner
(padicMultiplicativeLubinTateSeries_isUniformizer p)
(padicMultiplicativeLubinTateSeries p)
(padicMultiplicativeLubinTateSeries p)
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring)) =
(1 + PowerSeries.X) ^ m - 1 := by
let hπ := padicMultiplicativeLubinTateSeries_isUniformizer p
let A :
PowerSeries (padicLocalField p).valuationSubring :=
(1 + PowerSeries.X) ^ m - 1
let Eps :
PowerSeries (padicLocalField p).valuationSubring :=
(padicMultiplicativeLubinTateSeries p).toPowerSeries
have hEps :
Eps =
PowerSeries.binomialSeries
(padicLocalField p).valuationSubring (p : ℤ) -
1 :=
rfl
have hAconstant : PowerSeries.constantCoeff A = 0 := by
simp [A]
have hAcoeffOne :
PowerSeries.coeff 1 A =
(m : (padicLocalField p).valuationSubring) := by
dsimp only [A]
simp only [map_sub, PowerSeries.coeff_one]
rw [PowerSeries.coeff_one_pow]
simp
have hAlinear :
HasLinearTerm A
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring)) := by
rw [HasLinearTerm]
apply MvPowerSeries.nat_le_order
intro d hd
have hdNat : d.degree < 2 := by
exact_mod_cast hd
have hdegree : d.degree = d () := by
simp [Finsupp.degree_eq_sum]
have hd' : d () < 2 := by omega
by_cases hd0 : d () = 0
· have hdeq : d = 0 := by
apply Finsupp.ext
intro i
cases i
simp [hd0]
subst d
change
PowerSeries.constantCoeff A -
MvPowerSeries.constantCoeff
(linearForm
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring))) =
0
rw [hAconstant, constantCoeff_linearForm, sub_self]
· have hd1 : d () = 1 := by omega
have hdeq : d = Finsupp.single () 1 := by
apply Finsupp.ext
intro i
cases i
simp [hd1]
subst d
have hlinearForm :
linearForm
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring)) =
MvPowerSeries.C
(m : (padicLocalField p).valuationSubring) *
MvPowerSeries.X () := by
simp [linearForm]
change
PowerSeries.coeff 1 A -
MvPowerSeries.coeff (Finsupp.single () 1)
(linearForm
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring))) =
0
classical
rw [hAcoeffOne, hlinearForm, MvPowerSeries.coeff_C_mul,
MvPowerSeries.coeff_index_single_self_X, mul_one, sub_self]
have hAsubst : PowerSeries.HasSubst A :=
hAlinear.hasSubst
have hEsubst :
PowerSeries.HasSubst Eps := by
apply PowerSeries.HasSubst.of_constantCoeff_zero
exact (padicMultiplicativeLubinTateSeries p).constantCoeff_eq_zero
have hAsubstOne :
PowerSeries.subst A
(1 : PowerSeries (padicLocalField p).valuationSubring) =
1 := by
change
PowerSeries.subst A
(PowerSeries.C
(1 : (padicLocalField p).valuationSubring)) =
1
rw [PowerSeries.subst_C]
rfl
have hEsubstOne :
PowerSeries.subst Eps
(1 : PowerSeries (padicLocalField p).valuationSubring) =
1 := by
change
PowerSeries.subst Eps
(PowerSeries.C
(1 : (padicLocalField p).valuationSubring)) =
1
rw [PowerSeries.subst_C]
rfl
have hAone :
1 + A = (1 + PowerSeries.X) ^ m := by
dsimp only [A]
ring
have hEone :
1 + Eps =
(1 + PowerSeries.X) ^ p := by
rw [hEps, PowerSeries.binomialSeries_nat (R := ℤ)]
ring
have hcommutes :
PowerSeries.subst A Eps =
PowerSeries.subst Eps A := by
calc
PowerSeries.subst A Eps =
(1 + A) ^ p - 1 := by
rw [hEps, PowerSeries.binomialSeries_nat (R := ℤ),
PowerSeries.subst_sub hAsubst,
PowerSeries.subst_pow hAsubst,
PowerSeries.subst_add hAsubst,
PowerSeries.subst_X hAsubst, hAsubstOne]
_ = ((1 + PowerSeries.X) ^ m) ^ p - 1 := by
rw [hAone]
_ = (1 + PowerSeries.X) ^ (m * p) - 1 := by
rw [← pow_mul]
_ = (1 + PowerSeries.X) ^ (p * m) - 1 := by
rw [mul_comm m p]
_ = ((1 + PowerSeries.X) ^ p) ^ m - 1 := by
rw [pow_mul]
_ =
(1 + Eps) ^ m - 1 := by
rw [hEone]
_ =
PowerSeries.subst Eps
((1 +
(PowerSeries.X :
PowerSeries (padicLocalField p).valuationSubring)) ^ m -
1) := by
symm
rw [PowerSeries.subst_sub hEsubst,
PowerSeries.subst_pow hEsubst,
PowerSeries.subst_add hEsubst,
PowerSeries.subst_X hEsubst, hEsubstOne]
_ =
PowerSeries.subst Eps A :=
rfl
have hAintertwines :
Intertwines
(padicMultiplicativeLubinTateSeries p)
(padicMultiplicativeLubinTateSeries p) A := by
change
PowerSeries.subst A Eps =
MvPowerSeries.subst
(fun i : Unit =>
inVariable (padicMultiplicativeLubinTateSeries p) i) A
calc
PowerSeries.subst A Eps =
PowerSeries.subst Eps A :=
hcommutes
_ =
MvPowerSeries.subst
(fun i : Unit =>
inVariable (padicMultiplicativeLubinTateSeries p) i) A := by
symm
rw [PowerSeries.subst_def]
congr 1
funext i
cases i
change
PowerSeries.subst PowerSeries.X Eps = Eps
exact PowerSeries.X_subst Eps
exact
eq_of_hasLinearTerm_of_intertwines hπ
(padicMultiplicativeLubinTateSeries p)
(padicMultiplicativeLubinTateSeries p)
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring))
(recursiveIntertwiner_hasLinearTerm hπ
(padicMultiplicativeLubinTateSeries p)
(padicMultiplicativeLubinTateSeries p)
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring)))
(recursiveIntertwiner_intertwines hπ
(padicMultiplicativeLubinTateSeries p)
(padicMultiplicativeLubinTateSeries p)
(fun _ : Unit =>
(m : (padicLocalField p).valuationSubring)))
hAlinear hAintertwines