Home Developers Evidence math.fractions

Public evidence

math.fractions

Machine-checked verification for calculation version 1.0.6 · tier engine_tested

CVP status

CVP VERIFIED · production STALE · CVP protocol 1.0.0-proposed · Core assurance · operate (+/−/×/÷) and simplify

O2 BigInt gold covers operate (+/−/×/÷) and simplify only. Fraction integer inputs and every arithmetic intermediate must be safe integers (|x| ≤ 2^53−1); overflow returns VALUE_OUT_OF_RANGE. to-dec and from-dec have engine regression coverage, not O2 mode verification.

Declared partition coverage
PASS · 6/6 declared partitions (operate:add, operate:subtract, operate:multiply, operate:divide, simplify, invalid-domain)
Versions
Calculation 1.0.6 · CVP protocol 1.0.0-proposed · Evidence 2026-09-30.safe-integer-scope
Verification revision
2026-09-30.safe-integer-scope · 2/2 property · digest b2e72767e4a4

Verification

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

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.

    STALE · Build schema 1.0.6 matches page · production binding STALE · Semantic contract ✓ · Last attestation PASS · current evidence changed · re-attestation required · CVP STALE · attestation STALE — Production CURRENT withheld · Public/cache ✓ · Origin ✓

CVP verification suite

Protocol checks from the Evidence Manifest. Distinct from the legacy regression suite above. Verification revision 2026-09-30.safe-integer-scope. Calculation version 1.0.6. CVP 1.0.0-proposed. 6/6 golden · 8/8 CVP boundary · 8/8 invalid · 2/2 property · 1/1 metamorphic · 1/1 round-trip · 7/7 cross-interface · 5/5 CVP contract. digest b2e72767e4a4.

  • Golden (oracle-backed) 6 / 6
  • CVP boundary 8 / 8
  • Invalid input 8 / 8
  • Property 2 / 2
  • Metamorphic 1 / 1
  • Round-trip 1 / 1
  • Cross-interface 7 / 7
  • CVP contract 5 / 5
  • Interfaces PASS · UI (SSR) / REST / MCP
  • Interface claim ui-ssr is query-result HTML, not a live browser session.
  • Verified scope operate (+/−/×/÷) and simplify
  • Assurance Core
  • release artifacts aligned PASS
  • schema output required declared PASS
  • schema valid input executes PASS
  • engine success output validates schema PASS
  • rest success payload validates schema PASS

Fingerprint sha256:c22300e344070a95a3c8831f8dc26c0c9adbc88a96cb7aaf50303d2755e30b34

Input schema sha256:6a1a9267461a8f953ff6f8289ffbd2ad64525cc914f53be9132b15f325487864 · Output schema sha256:0c0a783a6f09275e7cb36fc533c12637800f7c0383df922c28c7a0cece5c8b31 · 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-30
Evidence core
2026-09-30T12:53:35.591Z
Rendered
2026-09-30T13:20:40.486Z
Last reviewed
—

Assumptions

  • Fraction inputs and every arithmetic intermediate must be safe integers (absolute value at most 2^53−1); otherwise VALUE_OUT_OF_RANGE.
  • From decimal uses binary64 conversion and is engine tested, outside the current O2 CVP verified scope.
  • 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