A natural multiple of a Gaussian dyadic.
Equations
- Hex.GaussDyadic.nsmul n w = (Hex.GaussDyadic.ofInt ↑n).mul w
Instances For
A natural power of a Gaussian dyadic.
Instances For
Zero is a right identity for Gaussian-dyadic addition.
Zero is a left identity for Gaussian-dyadic addition.
Gaussian-dyadic addition is associative.
Gaussian-dyadic addition is commutative.
Reassociate two Gaussian-dyadic sums after exchanging their middle terms.
One is a right identity for Gaussian-dyadic multiplication.
One is a left identity for Gaussian-dyadic multiplication.
Gaussian-dyadic multiplication distributes over addition on the left.
Gaussian-dyadic multiplication distributes over addition on the right.
Gaussian-dyadic multiplication is associative.
Gaussian-dyadic multiplication is commutative.
The zeroth Gaussian-dyadic power is one.
Characterization of a successor Gaussian-dyadic power.
Adding natural scalars before scaling agrees with adding the scaled values.
Scaling a Gaussian dyadic by one leaves it unchanged.
A natural scalar can move across Gaussian-dyadic multiplication.
Sum f 0 + ⋯ + f (n-1) using named Gaussian-dyadic addition.
Equations
- Hex.gaussSum n f = List.foldl (fun (s : Hex.GaussDyadic) (i : Nat) => s.add (f i)) (0, 0) (List.range n)
Instances For
The empty Gaussian-dyadic sum is zero.
Split the last term from a Gaussian-dyadic sum.
Left multiplication distributes over a Gaussian-dyadic sum.
Initial coefficient array for Taylor expansion.
Equations
- Hex.Taylor.init p = (List.map (fun (i : Nat) => Hex.GaussDyadic.ofInt (Hex.DensePoly.coeff p i)) (List.range (Hex.DensePoly.size p))).toArray
Instances For
One in-place synthetic-division pass.
The Taylor implementation calls this with n = p.size; the separate argument keeps the
inner fold independent of the polynomial representation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Closed-form coefficient of X^k in the Taylor shift. The range index
r represents the source coefficient at j = k + r.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Exact Taylor coefficients of p at the Gaussian-dyadic point z:
returns #[c₀, …, c_n] with p(X + z) = Σ cₖ Xᵏ, where
cₖ = Σ_{j ≥ k} binomial(j, k) · aⱼ · z^{j−k} exactly. The result has
size p.size (empty for the zero polynomial, a single cast coefficient
for a nonzero constant). Computed by repeated synthetic division, using
only exact Gaussian-dyadic additions and multiplications.
Equations
- Hex.taylor p z = List.foldl (Hex.Taylor.pass (Hex.DensePoly.size p) z) (Hex.Taylor.init p) (List.range (Hex.DensePoly.size p))
Instances For
Exact Taylor coefficients indexed by the polynomial and centre they represent. The equality is proof-only; compiled values contain just the coefficient array. Equality is characterized by the subsingleton instance below, so no constructor injectivity rule is generated.
- coeffs : Array GaussDyadic
The cached exact coefficient array.
The cache contains the exact Taylor shift at its indexed centre.
Instances For
At fixed polynomial and centre the coefficient equality determines the cached shift uniquely.
Compute the exact Taylor shift at center.
Equations
- Hex.TaylorShift.compute p center = { coeffs := Hex.taylor p center, valid := ⋯ }
Instances For
Re-index a cached shift along an exact centre equality. This changes only proof indices; the compiled coefficient array is reused.
Instances For
The Taylor expansion has one coefficient per stored coefficient of p:
the synthetic-division passes only overwrite entries of the initial
length-p.size array, never resize it.
Characterization of a Taylor coefficient as the finite binomial sum
Σ_r binom(k+r,k) · a_(k+r) · z^r.
In-bounds form of taylor_getD, convenient for companion proofs.