{
  "controller": "catenary",
  "name": "Catenary cable \u2014 cosh sag, envelope-guarded",
  "kind": "controller",
  "label": "A cosh geometry kernel. y = scale\u00b7cosh(curv\u00b7x) is the exact shape of a cable hanging under gravity; the clamp guards the reported height to the structural envelope [1,20] m. The @verify contract PROVES the height stays in the envelope for any input; the forward-error certificate BOUNDS how far the compiled float64 cosh drifts from exact (Certcom.pipeline_nested_std \u2014 cosh is the 7th and last symmetric-domain primitive in the certified fold).",
  "source": {
    "eml": "examples/catenary.eml",
    "sha256": "5ae1c0fe19f40a87"
  },
  "emitted": [
    {
      "target": "c",
      "category": "software",
      "file": "emit/catenary.c",
      "lines": 31,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "cpp",
      "category": "software",
      "file": "emit/catenary.cpp",
      "lines": 35,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "csharp",
      "category": "software",
      "file": "emit/Catenary.cs",
      "lines": 46,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "gdscript",
      "category": "software",
      "file": "emit/catenary.gd",
      "lines": 24,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "go",
      "category": "software",
      "file": "emit/catenary.go",
      "lines": 27,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "java",
      "category": "software",
      "file": "emit/Catenary.java",
      "lines": 34,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "javascript",
      "category": "software",
      "file": "emit/catenary.mjs",
      "lines": 33,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "kotlin",
      "category": "software",
      "file": "emit/catenary.kt",
      "lines": 28,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "luau",
      "category": "software",
      "file": "emit/catenary.luau",
      "lines": 31,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "matlab",
      "category": "software",
      "file": "emit/catenary.m",
      "lines": 23,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "python",
      "category": "software",
      "file": "emit/catenary.py",
      "lines": 22,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "rust",
      "category": "software",
      "file": "emit/catenary.rs",
      "lines": 25,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "swift",
      "category": "software",
      "file": "emit/catenary.swift",
      "lines": 27,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "wasm",
      "category": "software",
      "file": "emit/catenary.wasm.ll",
      "lines": 48,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "glsl",
      "category": "gpu shader",
      "file": "emit/catenary.glsl",
      "lines": 38,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "glsl-es",
      "category": "gpu shader",
      "file": "emit/catenary.glsles",
      "lines": 40,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "hlsl",
      "category": "gpu shader",
      "file": "emit/catenary.hlsl",
      "lines": 46,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "metal",
      "category": "gpu shader",
      "file": "emit/catenary.metal",
      "lines": 46,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "wgsl",
      "category": "gpu shader",
      "file": "emit/catenary.wgsl",
      "lines": 36,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "llvm",
      "category": "compiler IR",
      "file": "emit/catenary.ll",
      "lines": 47,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "coq",
      "category": "proof",
      "file": "emit/catenary.v",
      "lines": 26,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "isabelle",
      "category": "proof",
      "file": "emit/catenary.thy",
      "lines": 30,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "lean",
      "category": "proof",
      "file": "emit/catenary.lean",
      "lines": 48,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "aadl",
      "category": "safety-critical",
      "file": "emit/catenary.aadl",
      "lines": 42,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "ada/spark",
      "category": "safety-critical",
      "file": "emit/catenary.adb",
      "lines": 24,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "autosar",
      "category": "safety-critical",
      "file": "emit/catenary.autosar.c",
      "lines": 61,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "ros2",
      "category": "safety-critical",
      "file": "emit/catenary_pkg",
      "lines": 0,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "solidity",
      "category": "blockchain",
      "file": "emit/catenary.sol",
      "lines": 48,
      "ok": true,
      "tier": "LOCAL"
    },
    {
      "target": "zkproof",
      "category": "blockchain",
      "file": "emit/catenary.zk.json",
      "lines": 14,
      "ok": true,
      "tier": "LOCAL"
    }
  ],
  "proof": {
    "theorem": "catenary_within_envelope",
    "claim": "the reported catenary height is always inside the structural envelope [1, 20] m, for any input",
    "trail_file": "proof/catenary_within_envelope.axioms.txt",
    "clean": true,
    "forbidden_axioms_found": [],
    "rederived": "2026-07-10T13:47:25Z",
    "source_artifact": "examples/catenary.eml  ->  eml-compile --target lean   (the artifact the zoo ships; NOT a probe)",
    "reverify": "make verify-proof",
    "tier": "REPLAY (re-derive: TOOLCHAIN \u2014 Lean)"
  },
  "sim": {
    "envelope": "[1.0, 20.0] m",
    "scale": 5.0,
    "curv": 0.5,
    "samples": 400,
    "low_point_m": 5.0001,
    "peak_m": 18.811,
    "trace_csv": "trace.csv",
    "plot_png": "catenary.png",
    "check": {
      "quantity": "reported height samples outside the envelope [1, 20] m",
      "value": 0,
      "relation": "=",
      "bound": 0,
      "holds": true,
      "context": "across a \u00b14 m span the catenary sags to 5.0 m at the low point and rises toward the 20.0 m towers, always inside [1.0,20.0] \u2014 the envelope the theorem proves, the cosh the forward-error certificate bounds"
    },
    "tier": "LOCAL"
  },
  "certificate": {
    "applicable": true,
    "function": "catenary",
    "fragment": "arithmetic (lit/const/var/+/\u2212/\u00d7/unary\u2212) + clamp/abs (1-Lipschitz) + transcendentals sin/cos/tanh/atan (globally-Lipschitz) and exp/sinh/cosh (symmetric-domain local), nested to any depth",
    "regime": "absolute (cancellation-tolerant; inputs are sign-unconstrained so sums may cancel, where a relative bound would be unbounded)",
    "assumption": "IEEE-754 binary64 round-to-nearest, unit roundoff u = 2^-53 \u2248 1.110e-16",
    "input_ranges": {
      "scale": 5.0,
      "curv": 0.5,
      "x": 4.0
    },
    "bound_abs": 8.353752558773201e-15,
    "bound_ulps_of_result": 75.24391382167263,
    "output_magnitude_bound": 20.0,
    "lean_theorem": "Certcom.pipeline_nested_std  (arithmetic + sin/cos/tanh/atan/exp/sinh/cosh)",
    "lean_status": "machine-checked, sorryAx-free; claim_audit gate 'pipeline-arith-general-changelog'",
    "meaning": "For every input in the declared ranges, the compiled kernel's float64 result is within 8.354e-15 (absolute) of the exact real value, given the assumption. The soundness of this bound is the Lean theorem; this harness computes its instantiation for the kernel. clamp is 1-Lipschitz, so the clamped output inherits the pre-clamp arithmetic bound (absenc_lip, L=1).",
    "tier": "LOCAL",
    "lean_proof_file": "certificate/catenary_forward_error.lean",
    "lean_proof_tier": "TOOLCHAIN"
  },
  "hardware": {
    "tier": "n/a"
  }
}