A computable field of rational functions #
CRatFunc K is the fraction field of the computable polynomial ring
CPoly K, realised as a quotient of numerator/denominator pairs by the
cross-multiplication relation. All field operations and equality are
computable, so identities of rational functions in a generic
parameter X can be verified by native_decide.
Sums and products reduce their result by an unverified polynomial gcd
whose defining equations are checked by a decidable guard
(CRatFunc.reducePair), so the reduction requires no gcd correctness
theory while keeping intermediate degrees small.
This is the engine behind the symbolic verification of the parametric
EES(2,5;x) and EES(2,7;x) order conditions (arXiv:2507.21006,
Section 8; arXiv:2509.20599, Theorems E.1–E.2): instantiating a family
at x := X : CRatFunc ℚ proves its order conditions at the generic
parameter, i.e. as identities of rational functions.
Fraction representatives: a numerator and a nonzero denominator.
Equations
- BSeries.PreRatFunc K = (BSeries.CPoly K × { q : BSeries.CPoly K // q ≠ 0 })
Instances For
The cross-multiplication equivalence on fraction representatives.
Equations
- BSeries.ratFuncSetoid K = { r := fun (a b : BSeries.PreRatFunc K) => a.1 * ↑b.2 = b.1 * ↑a.2, iseqv := ⋯ }
The computable field of rational functions over K.
Equations
Instances For
Equations
- x.instDecidableEq y = Quotient.recOnSubsingleton₂ x y fun (a b : BSeries.PreRatFunc K) => decidable_of_iff (a.1 * ↑b.2 = b.1 * ↑a.2) ⋯
Equations
- BSeries.CRatFunc.instZero = { zero := BSeries.CRatFunc.mk 0 1 ⋯ }
Equations
- BSeries.CRatFunc.instOne = { one := BSeries.CRatFunc.mk 1 1 ⋯ }
Reduction by a runtime-checked gcd #
Cancel the (unverified) gcd of numerator and denominator; the guard checks the defining equations of the division, so the result represents the same fraction with no gcd correctness theory required.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Arithmetic #
Raw sum of representatives.
Instances For
Raw product of representatives.
Instances For
Raw negation of a representative.
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
- BSeries.CRatFunc.instNeg = { neg := fun (x : BSeries.CRatFunc K) => Quotient.liftOn x (fun (a : BSeries.PreRatFunc K) => ⟦BSeries.CRatFunc.negPair a⟧) ⋯ }
Equations
- One or more equations did not get rendered due to their size.
The field structure: all axioms are cross-multiplication identities
in the computable polynomial domain CPoly K.
Equations
- BSeries.CRatFunc.field = Field.ofMinimalAxioms (BSeries.CRatFunc K) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
The generic parameter.
Equations
Instances For
Embed a constant.
Equations
Instances For
The embedding of polynomials, as a ring homomorphism.
Equations
- BSeries.CRatFunc.ofPoly = { toFun := fun (p : BSeries.CPoly K) => BSeries.CRatFunc.mk p 1 ⋯, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }