import Definitions.Def_AutomorphicForm_TwistedOrbital import Definitions.Def_M4aHerbrand_GenuineBeta import Definitions.Def_NumberField_AdelicHaar import Definitions.Def_M4aHerbrand_IdeleClassVocab set_option autoImplicit false open MeasureTheory NumberField NumberField.AdelicHaar IsDedekindDomain open scoped ENNReal TensorProduct namespace AutomorphicForm.AdelicTracePushforward section attribute [local instance] NumberField.AdelicHaar.adeleBorel NumberField.AdelicHaar.borelSpace_adeleBorel noncomputable def traceFibre (K L : Type) [Field K] [NumberField K] [Field L] [NumberField L] [Algebra K L] (r : AdeleRing (π“ž K) K) (w : Fin (Module.finrank K (LinearMap.ker (Algebra.trace K L))) β†’ AdeleRing (π“ž K) K) : AdeleRing (π“ž L) L := M4aHerbrand.Bridge.genuineΞ² K L r * algebraMap L (AdeleRing (π“ž L) L) (Module.finrank K L : L)⁻¹ + βˆ‘ i, M4aHerbrand.Bridge.genuineΞ² K L (w i) * algebraMap L (AdeleRing (π“ž L) L) (Module.finBasis K (LinearMap.ker (Algebra.trace K L)) i : L) noncomputable def tracePushforward (K L : Type) [Field K] [NumberField K] [Field L] [NumberField L] [Algebra K L] (F : AdeleRing (π“ž L) L β†’ β„‚) (r : AdeleRing (π“ž K) K) : β„‚ := ∫ w, F (traceFibre K L r w) βˆ‚(Measure.pi fun _ => adelicAddHaar (π“ž K) K) noncomputable def actSubId (K L : Type) [Field K] [Field L] [NumberField L] [Algebra K L] (D : M4aHerbrand.IdeleGaloisDescent (π“ž L) K L) (Οƒ : L ≃ₐ[K] L) (x : AdeleRing (π“ž L) L) : AdeleRing (π“ž L) L := D.act Οƒ x - x noncomputable def localTraceFibre (K L : Type) [Field K] [NumberField K] [Field L] [NumberField L] [Algebra K L] (v : HeightOneSpectrum (π“ž K)) (r : v.adicCompletion K) (w : Fin (Module.finrank K (LinearMap.ker (Algebra.trace K L))) β†’ v.adicCompletion K) : L βŠ—[K] v.adicCompletion K := (Module.finrank K L : L)⁻¹ βŠ—β‚œ[K] r + βˆ‘ i, (Module.finBasis K (LinearMap.ker (Algebra.trace K L)) i : L) βŠ—β‚œ[K] w i noncomputable def localTracePushforward (K L : Type) [Field K] [NumberField K] [Field L] [NumberField L] [Algebra K L] (v : HeightOneSpectrum (π“ž K)) [MeasurableSpace (v.adicCompletion K)] [BorelSpace (v.adicCompletion K)] (f : L βŠ—[K] v.adicCompletion K β†’ β„‚) (r : v.adicCompletion K) : β„‚ := ∫ w, f (localTraceFibre K L v r w) βˆ‚(Measure.pi fun _ => ((Measure.addHaar : Measure (v.adicCompletion K)) (v.adicCompletionIntegers K : Set (v.adicCompletion K)))⁻¹ β€’ (Measure.addHaar : Measure (v.adicCompletion K))) def semiLocalIntegralOutside (K L : Type) [Field K] [NumberField K] [Field L] [NumberField L] [Algebra K L] (SK : Finset (HeightOneSpectrum (π“ž K))) : Set (AdeleRing (π“ž L) L) := {x | βˆ€ v βˆ‰ SK, AutomorphicForm.semiLocalEval K L v x.2 ∈ AutomorphicForm.semiLocalIntegers K L v} def IsSemiLocallyFactorizable (K L : Type) [Field K] [NumberField K] [Field L] [NumberField L] [Algebra K L] (F : AdeleRing (π“ž L) L β†’ β„‚) (SK : Finset (HeightOneSpectrum (π“ž K))) (gL : (w : InfinitePlace L) β†’ w.Completion β†’ β„‚) (Fv : (v : HeightOneSpectrum (π“ž K)) β†’ L βŠ—[K] v.adicCompletion K β†’ β„‚) : Prop := βˆ€ x, F x = (semiLocalIntegralOutside K L SK).indicator (fun x => (∏ w, gL w (x.1 w)) * ∏ v ∈ SK, Fv v (AutomorphicForm.semiLocalEval K L v x.2)) x end end AutomorphicForm.AdelicTracePushforward