English
If P is stable under composition with localization away maps on the right, then Locally P is stable under composition as well.
Русский
Если P устойчива к композиции с локализацией поAway справа, то Locally P устойчива к композиции тоже.
LaTeX
$$$\operatorname{StableUnderCompositionWithLocalizationAwayTarget}(P) \Rightarrow \operatorname{StableUnderCompositionWithLocalizationAwayTarget}(\Locally P).$$$
Lean4
/-- If `P` preserves localizations, then `Locally P` is stable under composition if `P` is. -/
theorem locally_stableUnderComposition (hPi : RespectsIso P) (hPl : LocalizationPreserves P)
(hPc : StableUnderComposition P) : StableUnderComposition (Locally P) := by
classical
intro R S T _ _ _ f g hf hg
rw [locally_iff_finite] at hf hg
obtain ⟨sf, hsfone, hsf⟩ := hf
obtain ⟨sg, hsgone, hsg⟩ := hg
rw [locally_iff_exists hPi]
refine
⟨sf × sg, fun (a, b) ↦ g a * b, ?_, fun (a, b) ↦
Localization.Away ((algebraMap T (Localization.Away b.val)) (g a.val)), inferInstance, inferInstance,
inferInstance, ?_⟩
· rw [eq_top_iff, ← hsgone, Ideal.span_le]
intro t ht
have : 1 ∈ Ideal.span (Set.range <| fun a : sf ↦ a.val) := by simp [hsfone]
simp only [Ideal.mem_span_range_iff_exists_fun, SetLike.mem_coe] at this ⊢
obtain ⟨cf, hcf⟩ := this
let cg : sg → T := Pi.single ⟨t, ht⟩ 1
use fun (a, b) ↦ g (cf a) * cg b
simp [cg, Pi.single_apply, Fintype.sum_prod_type, ← mul_assoc, ← Finset.sum_mul, ← map_mul, ← map_sum, hcf] at hcf ⊢
· intro ⟨a, b⟩
let g' := (algebraMap T (Localization.Away b.val)).comp g
let a' := (algebraMap T (Localization.Away b.val)) (g a.val)
have :
(algebraMap T <| Localization.Away a').comp (g.comp f) =
(Localization.awayMap g' a.val).comp ((algebraMap S (Localization.Away a.val)).comp f) :=
by
ext x
simp only [coe_comp, Function.comp_apply, a']
change _ = Localization.awayMap g' a.val (algebraMap S _ (f x))
simp only [Localization.awayMap, IsLocalization.Away.map, IsLocalization.map_eq]
rfl
simp only [this, a']
apply hPc _ _ (hsf a.val a.property)
apply @hPl _ _ _ _ g' _ _ _ _ _ _ _ _ ?_ (hsg b.val b.property)
exact IsLocalization.Away.instMapRingHomPowersOfCoe (Localization.Away (g' a.val)) a.val