Home Developers Evidence math.pythagorean

Public evidence

math.pythagorean

Machine-checked verification for calculation version 1.1.1 · tier engine_tested

CVP: CVP VERIFIED · CVP protocol 1.0.0-proposed · Engineering assurance· Positive sides; solve a|b|c or verify · Protocol · Schema · Production report

Declared partition coverage
PASS · 5/5 declared partitions (solve-c, solve-b, solve-a, verify, invalid-domain)
Versions
Calculation 1.1.1 · CVP protocol 1.0.0-proposed · Evidence 2026-09-16.sources-no-wolfram
Verification revision
2026-09-16.sources-no-wolfram · 4/4 property · digest 73a2ec1773da

Verification

Legacy regression suite: 16/16 calculation tests · Production surface contract 2/2

Three distinct suites: educational examples on the calculator page, this legacy regression count (16/16 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.1.1 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-09-16.sources-no-wolfram. Calculation version 1.1.1. CVP 1.0.0-proposed. 6/6 golden · 10/10 CVP boundary · 11/11 invalid · 4/4 property · 2/2 metamorphic · 2/2 round-trip · 1/1 cross-interface · 2/2 CVP contract. digest 73a2ec1773da.

  • Golden (oracle-backed) 6 / 6
  • CVP boundary 10 / 10
  • Invalid input 11 / 11
  • Property 4 / 4
  • Metamorphic 2 / 2
  • Round-trip 2 / 2
  • Cross-interface 1 / 1
  • CVP contract 2 / 2
  • Interfaces PASS · UI (SSR) / REST / MCP
  • Interface claim ui-ssr is query-result HTML, not a live browser session.
  • Assurance Engineering
  • release artifacts aligned PASS
  • schema valid input executes PASS

Fingerprint sha256:e3eae75bfd661c192941dba760913857bf01f93f76ffa477fe94cc94875d4247

Input schema sha256:fb56dca61052ab5f400ae2a6feb3759666b37b955e0d167134bf1f553e034c49 · Output schema sha256:bdb82fcc631a25cb663d5bfe6fbcf92b185eaba1536eda2886f29ef47789a6d3 · 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
pythagorean
Engine
pythagorean
Engine build
2026-09-16
Evidence core
2026-09-16T06:41:00.884Z
Rendered
2026-09-16T22:03:43.776Z
Last reviewed

Assumptions

  • Right triangle; positive side lengths.
  • c > a and c > b when solving for a leg.
  • Exactly two fields are inputs when solving. Explicit solve_for selects the output. If all three are supplied without solve_for, they are verified rather than overwritten.
  • Interactive evaluation, shared URLs, and REST use the same engine, solve_for contract, and error codes.
  • Share URL is canonical: solve_for=a|b|c forces solve even if a leftover third side is present; mode=verify is required to stay in Verify after a tab change.

Limitations

  • Sides must be positive → SIDE_NOT_POSITIVE
  • Need two of a,b,c (or verify with three) → MISSING_REQUIRED_INPUT

Sources

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

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
3-4-5goldenpassExpected c=5 · area=6 · Actual value=5 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=c · mode_label=Solve hypotenuse · formula=c=√(a²+b²) · heading=Hypotenuse c
5-13goldenpassExpected b=12 · Actual value=12 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=b · mode_label=Solve leg b · formula=b=√(c²−a²) · heading=Leg b
12-13goldenpassExpected a=5 · Actual value=5 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=a · mode_label=Solve leg a · formula=a=√(c²−b²) · heading=Leg a
7-9goldenpassExpected c=11.40175425099138 · Actual value=11.40175425099138 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=c · mode_label=Solve hypotenuse · formula=c=√(a²+b²) · heading=Hypotenuse c
verify-3-4-5goldenpassExpected mode=verify · valid=true · c=5 · area=6 · perimeter=12 · Actual value=5 · calculation_version=1.1.1 · status=success · mode=verify · mode_label=Verify right triangle · formula=a²+b²=c² · heading=Valid right triangle · a=3
solve-for-c-ignores-extragoldenpassExpected mode=solve · solve_for=c · c=5 · Actual value=5 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=c · mode_label=Solve hypotenuse · formula=c=√(a²+b²) · heading=Hypotenuse c
side-not-positiveboundarypassExpected SIDE_NOT_POSITIVE · Actual SIDE_NOT_POSITIVE
missing-inputsboundarypassExpected MISSING_REQUIRED_INPUT · Actual MISSING_REQUIRED_INPUT
boundary-py-negboundarypassExpected SIDE_NOT_POSITIVE · Actual SIDE_NOT_POSITIVE
boundary-py-zeroboundarypassExpected SIDE_NOT_POSITIVE · Actual SIDE_NOT_POSITIVE
boundary-py-hyp-eq-legboundarypassExpected HYPOTENUSE_TOO_SHORT · Actual HYPOTENUSE_TOO_SHORT
boundary-py-invalid-solveboundarypassExpected INVALID_SOLVE_FOR · Actual INVALID_SOLVE_FOR
boundary-py-overflowboundarypassExpected RESULT_OVERFLOW · Actual RESULT_OVERFLOW
boundary-py-hugeboundarypassExpected c=1.414213562373095e+200 · Actual value=1.414213562373095e+200 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=c · mode_label=Solve hypotenuse · formula=c=√(a²+b²) · heading=Hypotenuse c
boundary-py-tinyboundarypassExpected c=1.414213562373095e-200 · Actual value=1.414213562373095e-200 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=c · mode_label=Solve hypotenuse · formula=c=√(a²+b²) · heading=Hypotenuse c
boundary-py-cancel-legboundarypassExpected a=0.0001414213561611208 · Actual value=0.0001414213561611208 · calculation_version=1.1.1 · status=success · mode=solve · solve_for=a · mode_label=Solve leg a · formula=a=√(c²−b²) · heading=Leg a