Home Developers Evidence math.factorial

Public evidence

math.factorial

Machine-checked verification for calculation version 1.0.4 · tier engine_tested

CVP status

CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance

Ordinary factorial0≤n≤5000; exact product of normalized integer; matching n/nInput, bounded digits-only strings. Complete result metadata/types and truncated scientific preview; O3 tabulated exact checks23 cases, exhaustive5001 CPython audit recorded separately.

Declared partition coverage
PASS · 2/2 declared partitions (factorial, invalid-domain)
Versions
Calculation 1.0.4 · CVP protocol 1.0.0-proposed · Evidence 2026-10-20.factorial-complete-contract-v3
Verification revision
2026-10-20.factorial-complete-contract-v3 · 19/19 property · digest 9ad5f31d8553

Verification

Legacy regression suite: 24/24 calculation tests · Production surface contract 6/6

Three distinct suites: educational examples on the calculator page, this legacy regression count (24/24 golden + boundary), and the CVP verification suite below. They are not the same number. Property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the CVP Manifest . SKIP (0/0) means that suite has no published vectors.

    This calculator CURRENT · Public schema 1.0.4 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓

CVP verification suite

Protocol checks from the Evidence Manifest. Distinct from the legacy regression suite above. Verification revision 2026-10-20.factorial-complete-contract-v3. Calculation version 1.0.4. CVP 1.0.0-proposed. 6/6 golden · 7/7 CVP boundary · 6/6 invalid · 19/19 property · 5/5 metamorphic · 23/23 O3 · 1/1 cross-interface · 6/6 CVP contract. digest 9ad5f31d8553. Exact decimal-string identity vs Python math.factorial on the 23 published tabulated vectors (named 0,1,5,10,20,100,5000 plus 16 seeded n in 0–4999). 5000! is verified as the full 16,326-digit value and as SHA-256 of those ASCII digits. This is not a whole-domain proof beyond the published table.

  • Golden (oracle-backed) 6 / 6
  • CVP boundary 7 / 7
  • Invalid input 6 / 6
  • Property 19 / 19
  • Metamorphic 5 / 5
  • O3 independent oracle 23 / 23
  • Cross-interface 1 / 1
  • CVP contract 6 / 6
  • Interfaces PASS · UI (SSR) / REST / MCP
  • Interface claim ui-ssr is query-result HTML, not a live browser session.
  • Assurance Core
  • release artifacts aligned PASS
  • schema output required declared PASS
  • schema valid input executes PASS
  • engine success output validates schema PASS
  • schema rejects incomplete input PASS
  • rest success payload validates schema PASS

Fingerprint sha256:af9f396fcf6579934d52a37116e2049d5dc0d2117adb2b97c8f46b655e744695

Input schema sha256:65b528e8230052d58f33f790dc9d8eed93e982757269a75f1db13264fce18347 · Output schema sha256:dc7e95b6f3e83892b07fd746ded7cf1981c8091b887c07dfaa9757fe1269ca40 · Build-time SHA-256 digests prove published artifacts agree with each other (release_integrity.scope=workspace). Production attestation GETs canonical URLs twice (public/cached view and origin), including Capability HTML, via npm run attest:production --write (published at /.well-known/calculatorx-production-attestation.json) and fails if the public Capability page advertises a different calculation_version. This is artifact consistency, not an independent immutable release log.

Build & scope

Engine identity and declared limitations.

Tool
factorial
Engine
factorial
Engine build
2026-10-20
Evidence core
2026-10-20T10:40:00.133Z
Rendered
2026-10-23T01:27:11.446Z
Last reviewed
—

Assumptions

  • n is an integer satisfying 0 ≤ n ≤ 5000.
  • Ordinary (single) factorial only — not multifactorial and not the real Gamma function for non-integers.

Limitations

  • Ordinary (single) factorial only — not multifactorial and not Γ(n+1) for non-integers
  • Domain is 0 ≤ n ≤ 5000 (product/resource bound, not a mathematical bound)
  • Missing n → MISSING_REQUIRED_INPUT
  • Non-numeric or non-integer n → INVALID_NUMBER
  • n < 0 → VALUE_MUST_BE_NON_NEGATIVE
  • n > 5000 → VALUE_ABOVE_MAX
  • Digits-only strings: trimmed length≤64; matching n/nInput aliases; string scientific notation rejected. JSON numeric finite rounding is permitted; raw nonzero underflow rejected.
  • Scientific display uses the first12 digits without rounding; exact contains every digit.
  • Unknown fields → UNKNOWN_INPUT; aliases disagree → INPUT_ALIAS_CONFLICT; excessive text → INPUT_TOO_LARGE

Sources

Standards and references supporting this tool specification. Methods are listed separately — they are algorithms, not bibliographic sources.

Verification disclosure

Aggregate outcomes, scope and artifact commitments are public. Complete test inputs, expected values, execution records and oracle infrastructure are retained privately. This summary does not independently reproduce the full verification run.