|
| 1 | +/- |
| 2 | +Copyright (c) 2022 Adam Topaz. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Adam Topaz |
| 5 | +-/ |
| 6 | +import ring_theory.localization.at_prime |
| 7 | +import ring_theory.valuation.basic |
| 8 | + |
| 9 | +/-! |
| 10 | +
|
| 11 | +# Extending valuations to a localization |
| 12 | +
|
| 13 | +We show that, given a valuation `v` taking values in a linearly ordered commutative *group* |
| 14 | +with zero `Γ`, and a submonoid `S` of `v.supp.prime_compl`, the valuation `v` can be naturally |
| 15 | +extended to the localization `S⁻¹A`. |
| 16 | +
|
| 17 | +-/ |
| 18 | + |
| 19 | +variables |
| 20 | + {A : Type*} [comm_ring A] |
| 21 | + {Γ : Type*} [linear_ordered_comm_group_with_zero Γ] (v : valuation A Γ) |
| 22 | + {S : submonoid A} (hS : S ≤ v.supp.prime_compl) |
| 23 | + (B : Type*) [comm_ring B] [algebra A B] [is_localization S B] |
| 24 | + |
| 25 | +/-- We can extend a valuation `v` on a ring to a localization at a submonoid of |
| 26 | +the complement of `v.supp`. -/ |
| 27 | +noncomputable |
| 28 | +def valuation.extend_to_localization : valuation B Γ := |
| 29 | +let f := is_localization.to_localization_map S B, |
| 30 | + h : ∀ s : S, is_unit (v.1.to_monoid_hom s) := λ s, is_unit_iff_ne_zero.2 (hS s.2) in |
| 31 | +{ map_zero' := by convert f.lift_eq _ 0; simp, |
| 32 | + map_add_le_max' := λ x y, begin |
| 33 | + obtain ⟨a,b,s,rfl,rfl⟩ : ∃ (a b : A) (s : S), f.mk' a s = x ∧ f.mk' b s = y, |
| 34 | + { obtain ⟨a,s,rfl⟩ := f.mk'_surjective x, |
| 35 | + obtain ⟨b,t,rfl⟩ := f.mk'_surjective y, |
| 36 | + use [a * t, b * s, s * t], split; |
| 37 | + { rw [f.mk'_eq_iff_eq, submonoid.coe_mul], ring_nf } }, |
| 38 | + convert_to f.lift h (f.mk' (a+b) s) ≤ max (f.lift h _) (f.lift h _), |
| 39 | + { refine congr_arg (f.lift h) (is_localization.eq_mk'_iff_mul_eq.2 _), |
| 40 | + rw [add_mul, map_add], iterate 2 { erw is_localization.mk'_spec } }, |
| 41 | + iterate 3 { rw f.lift_mk' }, rw max_mul_mul_right, |
| 42 | + apply mul_le_mul_right' (v.map_add a b), |
| 43 | + end, |
| 44 | +..f.lift h } |
| 45 | + |
| 46 | +@[simp] |
| 47 | +lemma valuation.extend_to_localization_apply_map_apply (a : A) : |
| 48 | + v.extend_to_localization hS B (algebra_map A B a) = v a := |
| 49 | +submonoid.localization_map.lift_eq _ _ a |
0 commit comments