Identifier
F:complex-factorquotient
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

Complex.factorQuotient c a n k := Nat.rec (fun _ => Complex) zero (fun r' _ => hornerFromTop c a n r') (n - k) -- the synthetic-division quotient of the degree-<n+1 polynomial c by (X - a), COMPUTED via hornerFromTop rather than extracted from an existence proof. The zero-then-hornerFromTop shape (prepending a forced zero base case and reindexing hornerFromTop's own index DOWN by one) is deliberate, not cosmetic: the natural first attempt, reindexing directly as hornerFromTop c a n (n - k), sends every k >= n through truncated Nat.sub to the SAME index 0, and hornerFromTop c a n 0 returns c(n) -- the polynomial's own LEADING coefficient, not zero -- which would make the intended degree bound on factorQuotient flatly false once type-checked against a real k >= n. Reindexing hornerFromTop's own index down by one instead sends every k >= n through n - k = 0 to the forced zero base case, and any k < n unwraps to n - k >= 1 and the correct hornerFromTop c a n (n-k-1).

Formal statement
def Complex.factorQuotient : ((x0 : ((x0 : AxNat) -> Complex)) -> ((x1 : Complex) -> ((x2 : AxNat) -> ((x3 : AxNat) -> Complex))))

Dependencies

The graph shows direct ledger edges. Follow a node to open its artifact page.

Direct dependencies appear to the left. The current fact is in the center. Facts that depend directly on it appear to the right. Current fact
0 direct dependencies 0 direct dependents

Evidence

kernel-Complex.factorQuotient

Kind
kernel-term
Status
checked

Supports: Complex.factorQuotient is admitted by the trusted kernel gate with the type recorded in formal.statement.

Checker command
cargo run -q --release -p axeyum-lean-kernel --example kernel_declaration_projection -- --require-declaration Complex.factorQuotient --require-kind definition 2>/dev/null | grep -cE '^found[[:space:]]complex[[:space:]]definition[[:space:]]Complex\.factorQuotient[[:space:]]'
Evidence notes

Complex.factorQuotient is a Declaration::Definition. theorem_dependency_inventory / nat_theorem_inventory / prelude_theorem_inventory all filter to Declaration::Theorem and exclude Definitions/Inductives, so this fact uses the DIRECT 'kernel_declaration_projection --require-declaration' checker: it searches every constructed prelude's environment for an exact display-name match and exits non-zero on no match or kind mismatch. Verified on this tree: the command prints exactly one 'found\tcomplex\tdefinition\tComplex.factorQuotient\t...' line. --release is MANDATORY: this tool also builds creal/complex/cpoint, which overflow the default debug thread stack.

footprint-Complex.factorQuotient

Kind
exhaustive-enumeration
Status
checked

Supports: axiom_footprint: [] -- the complex prelude's trusted surface is empty, which bounds Complex.factorQuotient

Checker command
cargo run -q --release -p axeyum-lean-kernel --example nat_axiom_inventory -- --include-constructed --require-axiom-free complex
Evidence notes

Re-measured on this tree: complex: axiom=0 opaque=0 quotient=0 total_trusted=0, exits 0 printing 'ok: complex trusted surface = 0'. That bounds every declaration in the complex environment, including Complex.factorQuotient, since a declaration cannot depend on a trusted declaration the environment does not contain. --require-axiom-free <name> errors for a prelude never built by this run rather than silently passing on zero rows. --release is MANDATORY here.

Provenance

{
  "date": "2026-08-27",
  "established_by": "axeyum-lean-kernel build_complex_prelude (crates/axeyum-lean-kernel/src/complex/poly.rs, declare_factor_quotient)",
  "source": "canonical type read via kernel_declaration_projection's own UNFILTERED emit mode (cargo run -q --release -p axeyum-lean-kernel --example kernel_declaration_projection, no --require-declaration flag), which prints, per constructed prelude, one TSV row per declaration whose last field is kernel.render_lean(declaration.ty()) -- the same Kernel::render_lean canonical form nat_theorem_inventory prints, just not filtered to Declaration::Theorem. That output was piped to a scratchpad file and the exact row for this declaration's own prelude label was extracted and injected here programmatically (a Python script reading the TSV, never hand-transcribed); crates/ source was not touched to produce this batch."
}