Identifier
F:creal-alternatingupperbound
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

The mirror of CReal.alternatingLowerBound: for a nonnegative, non-increasing sequence a, if the alternating partial sums converge to L, then for every m, L <= O(m) (the odd-count partial sum). Since this development has no converges_upper_bound_shift primitive, this is NOT proved by a second shift-bound direction; instead it routes through converges_neg/neg_le_neg on the NEGATED sequence: the same per-n case split via Nat.even_or_odd feeds CReal.alternatingBracketUpper's dual bracket (this batch) into converges_lower_bound_shift for -O, giving -O(m) <= -L, then neg_le_neg flips it back.

Formal statement
theorem CReal.alternatingUpperBound : ((x0 : ((x0 : AxNat) -> CReal)) -> ((x1 : ((x1 : AxNat) -> CReal.le CReal.zero (x0 x1))) -> ((x2 : ((x2 : AxNat) -> CReal.le (x0 (AxNat.succ x2)) (x0 x2))) -> ((x3 : CReal) -> ((x4 : CReal.Converges (CReal.sumRange (fun (x4 : AxNat) => CReal.mul (CReal.pow (CReal.neg CReal.one) x4) (x0 x4))) x3) -> ((x5 : AxNat) -> CReal.le x3 (CReal.sumRange (fun (x6 : AxNat) => CReal.mul (CReal.pow (CReal.neg CReal.one) x6) (x0 x6)) (AxNat.succ (AxNat.add x5 x5)))))))))

Dependencies

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

Evidence

kernel-CReal.alternatingUpperBound

Kind
kernel-term
Status
checked

Supports: CReal.alternatingUpperBound 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 theorem_dependency_inventory -- alternatingUpperBound 2>/dev/null | grep -cE '^CReal\.alternatingUpperBound[[:space:]]'
Evidence notes

build_creal_prelude admits CReal.alternatingUpperBound through the trusted Kernel::add_declaration gate. theorem_dependency_inventory exits non-zero for a named filter matching nothing; grep -c asserts the exact tab-anchored line. --release is MANDATORY: this tool also builds creal/complex/cpoint, which overflow the default debug thread stack.

footprint-CReal.alternatingUpperBound

Kind
exhaustive-enumeration
Status
checked

Supports: axiom_footprint: [] -- the creal prelude's trusted surface is empty, which bounds CReal.alternatingUpperBound

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

Re-measured on this tree: creal: axiom=0 opaque=0 quotient=0 total_trusted=0, exits 0 printing 'ok: creal trusted surface = 0'. That bounds every declaration in the creal environment, including CReal.alternatingUpperBound, 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_creal_prelude (crates/axeyum-lean-kernel/src/creal/alternating.rs, declare_alternating_upper_bound)",
  "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); direct theorem dependencies were cross-read from the same run's direct_theorems column (field 6) and matched against the ledger's own registered kernel_theorem/formal.statement names to populate depends_on. No new probe binary was written for this batch; crates/ source was not touched to produce this batch."
}