Home Developers Evidence math.fractions

Public evidence

math.fractions

Machine-checked verification for calculation version 1.0.5 · tier engine_tested

CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance· O2 gold: operate (+/−/×/÷) and simplify · Protocol · Schema · Production report

Declared partition coverage
PASS · 2/2 declared partitions (fractions, invalid-domain)
Versions
Calculation 1.0.5 · CVP protocol 1.0.0-proposed
CVP identity
2/2 property · digest b258a9be030c

Verification

Legacy regression suite: 32/32 calculation tests · Production surface contract 3/3

Three distinct suites: educational examples on the calculator page, this legacy regression count (32/32 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.5 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓

CVP verification suite

Protocol checks from the Evidence Manifest. Distinct from the legacy regression suite above. Calculation version 1.0.5. CVP 1.0.0-proposed. 1/1 golden · 8/8 CVP boundary · 6/6 invalid · 2/2 property · 1/1 metamorphic · 1/1 round-trip · 1/1 cross-interface · 1/1 CVP contract. digest b258a9be030c.

  • Golden (oracle-backed) 1 / 1
  • CVP boundary 8 / 8
  • Invalid input 6 / 6
  • Property 2 / 2
  • Metamorphic 1 / 1
  • Round-trip 1 / 1
  • Cross-interface 1 / 1
  • CVP contract 1 / 1
  • 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 valid input executes PASS
  • engine success output validates schema PASS

Fingerprint sha256:43b5cf307fc4f3736c87857e2bb116ab79f3dd7e7e16b44a5aff2945b674380d

Input schema sha256:8d66a4747d5ec6e98d1037d68aa5291a0bd91768cfbd7df916f4b96c72d679af · Output schema sha256:757c639f564495aa26b322ec5656467d90847acbcf3528b263800e623234fe43 · 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
fractions
Engine
fractions
Engine build
2026-09-10
Evidence core
2026-09-10T22:48:17.762Z
Rendered
2026-09-16T22:03:43.769Z
Last reviewed

Assumptions

  • Integer numerators/denominators (and whole parts) for fraction modes.
  • Results reduced by GCF; signs normalized onto the numerator.

Limitations

  • Integer numerators and denominators only (optional mixed-number whole)
  • Denominator 0 → DENOMINATOR_MUST_BE_NONZERO
  • Division by 0/n → DIVISION_BY_ZERO
  • Add/subtract use LCD = LCM(b, d); (ad ± bc)/bd is an equivalent check only
  • Negative sign is normalized onto the numerator after reduction
  • Expert review pending — L1 engine-tested / source-checked

Sources

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

Methods

Algorithms this engine uses. Not external references.

Legacy published checks

Golden and boundary cases from the legacy Evidence JSON. CVP property, metamorphic, round-trip, O3, and interface statuses/checks are recorded in the Manifest — including SKIP when a suite has no vectors.

IDKindStatusDetail
add-lcdgoldenpassExpected improper=11/12 · n=11 · d=12 · Actual improper=11/12 · n=11 · d=12 · mixed=11/12 · display=11/12 · decimal=0.916666666667 · mode=operate · op=+
sub-lcdgoldenpassExpected improper=7/12 · Actual improper=7/12 · n=7 · d=12 · mixed=7/12 · display=7/12 · decimal=0.583333333333 · mode=operate · op=-
mulgoldenpassExpected improper=1/8 · Actual improper=1/8 · n=1 · d=8 · mixed=1/8 · display=1/8 · decimal=0.125 · mode=operate · op=*
divgoldenpassExpected improper=9/2 · mixed=4 1/2 · Actual improper=9/2 · n=9 · d=2 · mixed=4 1/2 · display=4 1/2 · decimal=4.5 · mode=operate · op=/
simp-12-18goldenpassExpected improper=2/3 · Actual improper=2/3 · n=2 · d=3 · mixed=2/3 · display=2/3 · decimal=0.666666666667 · mode=simplify · decimal_display=0.666666666667
simp-100-250goldenpassExpected improper=2/5 · Actual improper=2/5 · n=2 · d=5 · mixed=2/5 · display=2/5 · decimal=0.4 · mode=simplify · decimal_display=0.4
simp-zerogoldenpassExpected improper=0 · Actual improper=0 · n=0 · d=1 · mixed=0 · display=0 · decimal=0 · mode=simplify · decimal_display=0
add-zerogoldenpassExpected improper=3/4 · Actual improper=3/4 · n=3 · d=4 · mixed=3/4 · display=3/4 · decimal=0.75 · mode=operate · op=+
simp-neg-numgoldenpassExpected improper=-3/4 · Actual improper=-3/4 · n=-3 · d=4 · mixed=-3/4 · display=-3/4 · decimal=-0.75 · mode=simplify · decimal_display=-0.75
simp-neg-dengoldenpassExpected improper=-3/4 · Actual improper=-3/4 · n=-3 · d=4 · mixed=-3/4 · display=-3/4 · decimal=-0.75 · mode=simplify · decimal_display=-0.75
simp-neg-neggoldenpassExpected improper=3/4 · Actual improper=3/4 · n=3 · d=4 · mixed=3/4 · display=3/4 · decimal=0.75 · mode=simplify · decimal_display=0.75
add-neggoldenpassExpected improper=-11/8 · Actual improper=-11/8 · n=-11 · d=8 · mixed=-1 3/8 · display=-1 3/8 · decimal=-1.375 · mode=operate · op=+
add-mixedgoldenpassExpected improper=23/6 · mixed=3 5/6 · Actual improper=23/6 · n=23 · d=6 · mixed=3 5/6 · display=3 5/6 · decimal=3.83333333333 · mode=operate · op=+
mul-mixedgoldenpassExpected improper=33/8 · Actual improper=33/8 · n=33 · d=8 · mixed=4 1/8 · display=4 1/8 · decimal=4.125 · mode=operate · op=*
simp-impropergoldenpassExpected improper=7/3 · mixed=2 1/3 · Actual improper=7/3 · n=7 · d=3 · mixed=2 1/3 · display=7/3 · decimal=2.33333333333 · mode=simplify · decimal_display=2.33333333333
from-375goldenpassExpected improper=3/8 · Actual improper=3/8 · n=3 · d=8 · mixed=3/8 · display=3/8 · decimal=0.375 · mode=from-dec · decimal_display=0.375
from-125goldenpassExpected improper=5/4 · Actual improper=5/4 · n=5 · d=4 · mixed=1 1/4 · display=5/4 · decimal=1.25 · mode=from-dec · decimal_display=1.25
to-decgoldenpassExpected improper=3/8 · decimal=0.375 · Actual improper=3/8 · n=3 · d=8 · mixed=3/8 · display=0.375 · decimal=0.375 · mode=to-dec · decimal_display=0.375
add-halvesgoldenpassExpected improper=1 · Actual improper=1 · n=1 · d=1 · mixed=1 · display=1 · decimal=1 · mode=operate · op=+
mul-cancelgoldenpassExpected improper=1/4 · Actual improper=1/4 · n=1 · d=4 · mixed=1/4 · display=1/4 · decimal=0.25 · mode=operate · op=*
boundary-den-zero-aboundarypassExpected DENOMINATOR_MUST_BE_NONZERO · Actual DENOMINATOR_MUST_BE_NONZERO
boundary-den-zero-bboundarypassExpected DENOMINATOR_MUST_BE_NONZERO · Actual DENOMINATOR_MUST_BE_NONZERO
boundary-div-zeroboundarypassExpected DIVISION_BY_ZERO · Actual DIVISION_BY_ZERO
boundary-missingboundarypassExpected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT
boundary-invalid-numboundarypassExpected INVALID_NUMBER · Actual INVALID_NUMBER
boundary-from-dec-emptyboundarypassExpected INVALID_NUMBER · Actual INVALID_NUMBER
boundary-alias-addboundarypassExpected improper=11/12 · n=11 · d=12 · Actual improper=11/12 · n=11 · d=12 · mixed=11/12 · display=11/12 · decimal=0.916666666667 · mode=operate · op=+
boundary-from-neg-decimalboundarypassExpected improper=-1/8 · Actual improper=-1/8 · n=-1 · d=8 · mixed=-1/8 · display=-1/8 · decimal=-0.125 · mode=from-dec · decimal_display=-0.125
property-lcd-equals-cross-productpropertypassLCD result matches (ad ± bc)/bd after reduction
property-deterministicpropertypass3/4 × 1/6 is deterministic
property-multiply-commutativepropertypass(2/5)×(3/7) = (3/7)×(2/5)
property-gcf-lowest-termspropertypass12/18 reduces to 2/3