The field structure of rational functions #
Main definitions #
Working with rational functions as polynomials:
- RatFunc.instFieldprovides a field structure You can use- IsFractionRingAPI to treat- RatFuncas the field of fractions of polynomials:
- algebraMap K[X] (RatFunc K)maps polynomials to rational functions
- IsFractionRing.algEquivmaps other fields of fractions of- K[X]to- RatFunc K.
In particular:
- FractionRing.algEquiv K[X] (RatFunc K)maps the generic field of fraction construction to- RatFunc K. Combine this with- AlgEquiv.restrictScalarsto change the- FractionRing K[X] ≃ₐ[K[X]] RatFunc Kto- FractionRing K[X] ≃ₐ[K] RatFunc K.
Working with rational functions as fractions:
- RatFunc.numand- RatFunc.denomgive the numerator and denominator. These values are chosen to be coprime and such that- RatFunc.denomis monic.
Lifting homomorphisms of polynomials to other types, by mapping and dividing, as long as the homomorphism retains the non-zero-divisor property:
- RatFunc.liftMonoidWithZeroHomlifts a- K[X] →*₀ G₀to a- RatFunc K →*₀ G₀, where- [CommRing K] [CommGroupWithZero G₀]
- RatFunc.liftRingHomlifts a- K[X] →+* Lto a- RatFunc K →+* L, where- [CommRing K] [Field L]
- RatFunc.liftAlgHomlifts a- K[X] →ₐ[S] Lto a- RatFunc K →ₐ[S] L, where- [CommRing K] [Field L] [CommSemiring S] [Algebra S K[X]] [Algebra S L]This is satisfied by injective homs.
We also have lifting homomorphisms of polynomials to other polynomials, with the same condition on retaining the non-zero-divisor property across the map:
- RatFunc.maplifts- K[X] →* R[X]when- [CommRing K] [CommRing R]
- RatFunc.mapRingHomlifts- K[X] →+* R[X]when- [CommRing K] [CommRing R]
- RatFunc.mapAlgHomlifts- K[X] →ₐ[S] R[X]when- [CommRing K] [IsDomain K] [CommRing R] [IsDomain R]
The zero rational function.
Equations
- RatFunc.zero = { toFractionRing := 0 }
Instances For
Equations
- RatFunc.instZero = { zero := RatFunc.zero }
Equations
- RatFunc.instAdd = { add := RatFunc.add }
Equations
- RatFunc.instSub = { sub := RatFunc.sub }
Equations
- RatFunc.instNeg = { neg := RatFunc.neg }
The multiplicative unit of rational functions.
Equations
- RatFunc.one = { toFractionRing := 1 }
Instances For
Equations
- RatFunc.instOne = { one := RatFunc.one }
Equations
- RatFunc.instMul = { mul := RatFunc.mul }
Equations
- RatFunc.instDiv = { div := RatFunc.div }
Equations
- RatFunc.instInv = { inv := RatFunc.inv }
Scalar multiplication of rational functions.
Equations
Instances For
Equations
Equations
- RatFunc.instInhabited K = { default := 0 }
RatFunc K is isomorphic to the field of fractions of K[X], as rings.
This is an auxiliary definition; simp-normal form is IsLocalization.algEquiv.
Equations
- RatFunc.toFractionRingRingEquiv K = { toFun := RatFunc.toFractionRing, invFun := RatFunc.ofFractionRing, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Solve equations for RatFunc K by working in FractionRing K[X].
Equations
- RatFunc.tacticFrac_tac = Lean.ParserDescr.node `RatFunc.tacticFrac_tac 1024 (Lean.ParserDescr.nonReservedSymbol "frac_tac" false)
Instances For
Solve equations for RatFunc K by applying RatFunc.induction_on.
Equations
- RatFunc.tacticSmul_tac = Lean.ParserDescr.node `RatFunc.tacticSmul_tac 1024 (Lean.ParserDescr.nonReservedSymbol "smul_tac" false)
Instances For
RatFunc K is a commutative monoid.
This is an intermediate step on the way to the full instance RatFunc.instCommRing.
Equations
- RatFunc.instCommMonoid K = { toMul := RatFunc.instMul, mul_assoc := ⋯, toOne := RatFunc.instOne, one_mul := ⋯, mul_one := ⋯, npow := npowRec, npow_zero := ⋯, npow_succ := ⋯, mul_comm := ⋯ }
Instances For
RatFunc K is an additive commutative group.
This is an intermediate step on the way to the full instance RatFunc.instCommRing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lift a monoid homomorphism that maps polynomials φ : R[X] →* S[X]
to a RatFunc R →* RatFunc S,
on the condition that φ maps non-zero-divisors to non-zero-divisors,
by mapping both the numerator and denominator and quotienting them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lift a ring homomorphism that maps polynomials φ : R[X] →+* S[X]
to a RatFunc R →+* RatFunc S,
on the condition that φ maps non-zero-divisors to non-zero-divisors,
by mapping both the numerator and denominator and quotienting them.
Equations
- RatFunc.mapRingHom φ hφ = { toMonoidHom := RatFunc.map φ hφ, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Lift a monoid with zero homomorphism R[X] →*₀ G₀ to a RatFunc R →*₀ G₀
on the condition that φ maps non-zero-divisors to non-zero-divisors,
by mapping both the numerator and denominator and quotienting them.
Equations
- RatFunc.liftMonoidWithZeroHom φ hφ = { toFun := fun (f : RatFunc R) => f.liftOn (fun (p q : Polynomial R) => φ p / φ q) ⋯, map_zero' := ⋯, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Lift an injective ring homomorphism R[X] →+* L to a RatFunc R →+* L
by mapping both the numerator and denominator and quotienting them.
Equations
- RatFunc.liftRingHom φ hφ = { toFun := (↑(RatFunc.liftMonoidWithZeroHom φ.toMonoidWithZeroHom hφ)).toFun, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- One or more equations did not get rendered due to their size.
RatFunc as field of fractions of Polynomial #
Equations
- One or more equations did not get rendered due to their size.
The coercion from polynomials to rational functions, implemented as the algebra map from a domain to its field of fractions
Equations
- ↑P = (algebraMap (Polynomial K) (RatFunc K)) P
Instances For
Equations
The equivalence between RatFunc K and the field of fractions of K[X]
Equations
- RatFunc.toFractionRingAlgEquiv K R = { toEquiv := (RatFunc.toFractionRingRingEquiv K).toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
Instances For
Lift an algebra homomorphism that maps polynomials φ : K[X] →ₐ[S] R[X]
to a RatFunc K →ₐ[S] RatFunc R,
on the condition that φ maps non-zero-divisors to non-zero-divisors,
by mapping both the numerator and denominator and quotienting them.
Equations
- RatFunc.mapAlgHom φ hφ = { toRingHom := RatFunc.mapRingHom φ hφ, commutes' := ⋯ }
Instances For
Lift an injective algebra homomorphism K[X] →ₐ[S] L to a RatFunc K →ₐ[S] L
by mapping both the numerator and denominator and quotienting them.
Equations
- RatFunc.liftAlgHom φ hφ = { toRingHom := RatFunc.liftRingHom φ.toRingHom hφ, commutes' := ⋯ }
Instances For
RatFunc K is the field of fractions of the polynomials over K.
Induction principle for RatFunc K: if f p q : P (p / q) for all p q : K[X],
then P holds on all elements of RatFunc K.
See also induction_on', which is a recursion principle defined in terms of RatFunc.mk.
FractionRing.liftAlgebra specialized to RatFunc R.
This is a scoped instance because it creates a diamond when L = RatFunc R.
Equations
Instances For
FractionRing.isScalarTower_liftAlgebra specialized to RatFunc R.
FractionRing.instFaithfulSMul specialized to RatFunc R.
Numerator and denominator #
RatFunc.numDenom are numerator and denominator of a rational function over a field,
normalized such that the denominator is monic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
RatFunc.num is the numerator of a rational function,
normalized such that the denominator is monic.
Instances For
A version of num_div_dvd with the LHS in simp normal form
RatFunc.denom is the denominator of a rational function,
normalized such that it is monic.