kernel-reconstructed-mvt-secant-p-at-b
- Kind
- kernel-term
- Status
- checked
Supports: p(3) = 27 for p = x^3, admitted by crate::Kernel::add_declaration as Check.mvt_secant_p_at_b : Eq Rat (Rat.polyEval c 4 (Rat.ofInt 3)) (Rat.ofInt <the arithmetic chain the CAS-derived coefficients reduce to at x=3>), where c is built from the same [0,0,0,1] integer coefficients axeyum-cas's own mvt::polynomial_mvt(x^3, 0, 3) certificate's cert.poly field actually returns (asserted equal in the test, not hand-picked). Unlike the IVT/EVT sign-bracket siblings (which state an inequality and let the numeral live only inside the proof's Nat.le witness), this is an EQUALITY reconstruction: the ascribed type's right-hand side IS the same Rat.ofInt(chain) expression poly_eval_to_of_int's own returned proof already has as its inferred type, so there is no separate def_eq-only ascription step -- the value argument is literally that returned proof, unmodified.
cargo test -p axeyum-lean-kernel --lib rat_prelude::cas_mvt_secant_bridge_tests::tests::mvt_secant_endpoints_kernel_checked -- --exact 2>/dev/null | grep -cE '^test rat_prelude::cas_mvt_secant_bridge_tests::tests::mvt_secant_endpoints_kernel_checked \.\.\. ok$' Evidence notes
The named test builds both endpoint equalities (Check.mvt_secant_p_at_b and Check.mvt_secant_p_at_a) plus a swapped-value negative control in one #[test] fn, so this evidence row and the next one share one checker_command -- separate rows because they support distinct halves of the statement, not distinct commands. cert.poly/a/b are asserted equal to [0,0,0,1]/0/3 BEFORE any kernel-side term is built, and cert.slope is separately asserted equal to 9 as a sanity check on the CAS side (not itself kernel-reconstructed -- see axiom_footprint). Measured wall-clock (this machine, cold cargo-serialized.sh test, single invocation): 6.53s including the one-time Rat prelude build, comparable to the sibling IVT/EVT/extremum bridges.