Localization over left Ore sets. #
This file defines the localization of a monoid over a left Ore set and proves its universal mapping property.
Notation #
Introduces the notation R[S⁻¹] for the Ore localization of a monoid R at a right Ore
subset S. Also defines a new heterogeneous division notation r /ₒ s for a numerator r : R and
a denominator s : S.
References #
- https://ncatlab.org/nlab/show/Ore+localization
- [Zoran Škoda, Noncommutative localization in noncommutative geometry][skoda2006]
Tags #
localization, Ore, non-commutative
Implementation detail #
Some of the declarations are marked reducible to avoid diamonds with
Mathlib/Algebra/Module/LocalizedModule/Basic.lean. This causes a significant performance
regression, most notabaly in Mathlib/AlgebraicGeometry/AffineSpace.lean.
Also see https://github.com/leanprover-community/mathlib4/pull/31862.
We shall investigate if there are ways to improve performances. For example by introducing
typeclasses to unify the two constructions on this and LocalizedModule, or by marking some
downstream constructions (e.g. Spec.structureSheaf) as irreducible.
The setoid on R × S used for the Ore localization.
Equations
Instances For
The Ore localization of a monoid and a submonoid fulfilling the Ore condition.
Equations
- OreLocalization S X = Quotient (OreLocalization.oreEqv S X)
Instances For
The Ore localization of an additive monoid and a submonoid fulfilling the Ore condition.
Equations
- AddOreLocalization S X = Quotient (AddOreLocalization.oreEqv S X)
Instances For
The Ore localization of a monoid and a submonoid fulfilling the Ore condition.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The division in the Ore localization X[S⁻¹], as a fraction of an element of X and S.
Instances For
The subtraction in the Ore localization,
as a difference of an element of X and S.
Instances For
The division in the Ore localization X[S⁻¹], as a fraction of an element of X and S.
Equations
- OreLocalization.«term_/ₒ_» = Lean.ParserDescr.trailingNode `OreLocalization.«term_/ₒ_» 70 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " /ₒ ") (Lean.ParserDescr.cat `term 71))
Instances For
The subtraction in the Ore localization,
as a difference of an element of X and S.
Equations
- OreLocalization.«term_-ₒ_» = Lean.ParserDescr.trailingNode `OreLocalization.«term_-ₒ_» 65 65 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " -ₒ ") (Lean.ParserDescr.cat `term 66))
Instances For
A difference r -ₒ s is equal to its expansion by an
arbitrary translation t if t + s ∈ S.
Differences whose minuends differ by a common summand can be proven equal if
those summands expand to equal elements of R.
A function or predicate over X and S can be lifted to X[S⁻¹] if it is invariant
under expansion on the left.
Equations
- OreLocalization.liftExpand P hP = Quotient.lift (fun (p : X × ↥S) => P p.1 p.2) ⋯
Instances For
A function or predicate over X and S can be lifted to the localization if it
is invariant under expansion on the left.
Equations
- AddOreLocalization.liftExpand P hP = Quotient.lift (fun (p : X × ↥S) => P p.1 p.2) ⋯
Instances For
A version of liftExpand used to simultaneously lift functions with two arguments
in X[S⁻¹].
Equations
- OreLocalization.lift₂Expand P hP = OreLocalization.liftExpand (fun (r₁ : X) (s₁ : ↥S) => OreLocalization.liftExpand (P r₁ s₁) ⋯) ⋯
Instances For
A version of liftExpand used to simultaneously lift functions with two arguments.
Equations
- AddOreLocalization.lift₂Expand P hP = AddOreLocalization.liftExpand (fun (r₁ : X) (s₁ : ↥S) => AddOreLocalization.liftExpand (P r₁ s₁) ⋯) ⋯
Instances For
The scalar multiplication on the Ore localization of monoids.
Equations
- y.smul x = OreLocalization.liftExpand (fun (x1 : R) (x2 : ↥S) => OreLocalization.smul''✝ x1 x2 x) ⋯ y
Instances For
the vector addition on the Ore localization of additive monoids.
Equations
- y.vadd x = AddOreLocalization.liftExpand (fun (x1 : R) (x2 : ↥S) => AddOreLocalization.vadd''✝ x1 x2 x) ⋯ y
Instances For
Equations
- OreLocalization.instSMul = { smul := OreLocalization.smul }
Equations
Equations
Equations
A characterization lemma for the scalar multiplication on the Ore localization, allowing for a choice of Ore numerator and Ore denominator.
A characterization lemma for the vector addition on the Ore localization, allowing for a choice of Ore minuend and Ore subtrahend.
A characterization lemma for the multiplication on the Ore localization, allowing for a choice of Ore numerator and Ore denominator.
A characterization lemma for the addition on the Ore localization, allowing for a choice of Ore minuend and Ore subtrahend.
Another characterization lemma for the scalar multiplication on the Ore localization delivering Ore witnesses and conditions bundled in a sigma type.
Equations
- OreLocalization.oreDivSMulChar' r₁ r₂ s₁ s₂ = ⟨OreLocalization.oreNum r₁ s₂, ⟨OreLocalization.oreDenom r₁ s₂, ⋯⟩⟩
Instances For
Another characterization lemma for the vector addition on the Ore localization delivering Ore witnesses and conditions bundled in a sigma type.
Equations
- AddOreLocalization.oreSubVAddChar' r₁ r₂ s₁ s₂ = ⟨AddOreLocalization.oreMin r₁ s₂, ⟨AddOreLocalization.oreSubtra r₁ s₂, ⋯⟩⟩
Instances For
Another characterization lemma for the multiplication on the Ore localization delivering Ore witnesses and conditions bundled in a sigma type.
Equations
- OreLocalization.oreDivMulChar' r₁ r₂ s₁ s₂ = ⟨OreLocalization.oreNum r₁ s₂, ⟨OreLocalization.oreDenom r₁ s₂, ⋯⟩⟩
Instances For
Another characterization lemma for the addition on the Ore localization delivering Ore witnesses and conditions bundled in a sigma type.
Equations
- AddOreLocalization.oreSubAddChar' r₁ r₂ s₁ s₂ = ⟨AddOreLocalization.oreMin r₁ s₂, ⟨AddOreLocalization.oreSubtra r₁ s₂, ⋯⟩⟩
Instances For
1 in the localization, defined as 1 /ₒ 1.
Equations
- OreLocalization.one = 1 /ₒ 1
Instances For
0 in the additive localization, defined as 0 -ₒ 0.
Equations
Instances For
Equations
Equations
Equations
- OreLocalization.instInhabited = { default := 1 }
Equations
- AddOreLocalization.instInhabited = { default := 0 }
Equations
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- OreLocalization.instMulActionOreLocalization = { toSMul := OreLocalization.instSMul, mul_smul := ⋯, one_smul := ⋯ }
Equations
- AddOreLocalization.instAddActionOreLocalization = { toVAdd := AddOreLocalization.instVAdd, add_vadd := ⋯, zero_vadd := ⋯ }
The fraction s /ₒ 1 as a unit in R[S⁻¹], where s : S.
Equations
Instances For
The difference s -ₒ 0 as an additive unit.
Equations
Instances For
The multiplicative homomorphism from R to R[S⁻¹], mapping r : R to the
fraction r /ₒ 1.
Equations
- OreLocalization.numeratorHom = { toFun := fun (r : R) => r /ₒ 1, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The additive homomorphism from R to AddOreLocalization R S,
mapping r : R to the difference r -ₒ 0.
Equations
- AddOreLocalization.numeratorHom = { toFun := fun (r : R) => r -ₒ 0, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The universal lift from a morphism R →* T, which maps elements of S to units of T,
to a morphism R[S⁻¹] →* T.
Equations
- OreLocalization.universalMulHom f fS hf = { toFun := fun (x : OreLocalization S R) => OreLocalization.liftExpand (fun (r : R) (s : ↥S) => ↑(fS s)⁻¹ * f r) ⋯ x, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The universal lift from a morphism R →+ T, which maps elements of S to
additive-units of T, to a morphism AddOreLocalization R S →+ T.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The universal morphism universalMulHom is unique.
The universal morphism universalAddHom is unique.
Scalar multiplication in a monoid localization.
Equations
- OreLocalization.hsmul c = OreLocalization.liftExpand (fun (m : X) (s : ↥S) => OreLocalization.oreNum (c • 1) s • m /ₒ OreLocalization.oreDenom (c • 1) s) ⋯
Instances For
Vector addition in an additive monoid localization.
Equations
- AddOreLocalization.hvadd c = AddOreLocalization.liftExpand (fun (m : X) (s : ↥S) => (AddOreLocalization.oreMin (c +ᵥ 0) s +ᵥ m) -ₒ AddOreLocalization.oreSubtra (c +ᵥ 0) s) ⋯
Instances For
Equations
Equations
Equations
- OreLocalization.instMulActionOfIsScalarTower = { toSMul := OreLocalization.instSMulOfIsScalarTower, mul_smul := ⋯, one_smul := ⋯ }
Equations
- AddOreLocalization.instAddActionOfVAddAssocClass = { toVAdd := AddOreLocalization.instVAddOfVAddAssocClass, add_vadd := ⋯, zero_vadd := ⋯ }
Equations
- OreLocalization.instCommMonoid = { toMonoid := OreLocalization.instMonoid, mul_comm := ⋯ }
Equations
- AddOreLocalization.instAddCommMonoid = { toAddMonoid := AddOreLocalization.instAddMonoid, add_comm := ⋯ }
0 in the localization, defined as 0 /ₒ 1.
Equations
- OreLocalization.zero = 0 /ₒ 1
Instances For
Equations
- OreLocalization.instZero = { zero := OreLocalization.zero }