// SPDX-License-Identifier: Apache-2.0 // © 2026 Lutar, Stephen P. — SZL Holdings // ORCID: 0009-0001-0110-4173 // // Layer 6 — a11oy policy gate for LiuHuiPi // // Policy rationale: // A geometric computation is allowed only when the Liu Hui polygon // approximation of π at step k achieves an absolute error ≤ threshold. // The Lean theorem proves sideSquared ∈ [0,4] (well-definedness), and // the monotone convergence guarantees piEstimate < π. The gate enforces // that sufficient polygon sides have been computed before the approximation // is trusted in a governance computation. // // Lean theorem cited: `sideSquared_bounds` // Lean file: Lutar/Banach/LiuHuiPi.lean // Lean commit SHA: 1dca00032dfc9aa8559cc6c2e4b63192fcf52371 // // Policy: if |liuHuiPi(k) − π| ≤ threshold → policy.allow; else → policy.deny // // References: // Lean: szl-holdings/lutar-lean Lutar/Banach/LiuHuiPi.lean // Runtime: szl-holdings/ouroboros agentic/formulas/liuHuiPi.ts export interface PolicyDecision { allow: boolean; rationale: string; formula: string; leanTheorem: string; leanFile: string; leanCommitSha: string; piEstimate: number; absError: number; threshold: number; lambdaScore: number; } export interface LiuHuiPiGateConfig { /** * Maximum allowed |piEstimate − π|. * Default: 1e-4 (requires k ≥ 8 for convergence). */ threshold?: number; } export interface LiuHuiPiGateOpts { k: number; } const LEAN_THEOREM = "sideSquared_bounds"; const LEAN_FILE = "Lutar/Banach/LiuHuiPi.lean"; const LEAN_COMMIT = "1dca00032dfc9aa8559cc6c2e4b63192fcf52371"; const DEFAULT_THRESH = 1e-4; // ── Inline formula ──────────────────────────────────────────────────────────── // Lean: sideSquared_bounds ensures sq ∈ [0,4] for all steps function _liuHuiPi(k: number): { piEstimate: number; absError: number } { let sq = 1.0; for (let i = 0; i < k; i++) sq = 2 - Math.sqrt(4 - sq); const sideCount = 6 * Math.pow(2, k); const piEstimate = (sideCount * Math.sqrt(sq)) / 2; return { piEstimate, absError: Math.abs(piEstimate - Math.PI) }; } /** * LiuHuiPi policy gate. * * Allows geometric governance actions only when the Liu Hui π approximation * at step k achieves absolute error ≤ threshold. * * Lean theorem: `sideSquared_bounds` * Lean file: Lutar/Banach/LiuHuiPi.lean (commit 1dca00032dfc9aa8559cc6c2e4b63192fcf52371) */ export function liuHuiPiGate( config: LiuHuiPiGateConfig = {} ): (opts: LiuHuiPiGateOpts) => PolicyDecision { const threshold = config.threshold ?? DEFAULT_THRESH; if (!Number.isFinite(threshold) || threshold < 0) { throw new Error(`LiuHuiPiGate: threshold must be ≥ 0; got ${threshold}`); } return function gate(opts: LiuHuiPiGateOpts): PolicyDecision { const { k } = opts; if (!Number.isInteger(k) || k < 0 || k > 50) { throw new Error(`LiuHuiPiGate: k must be in [0,50]; got ${k}`); } const { piEstimate, absError } = _liuHuiPi(k); const lambdaScore = Math.max(0, 1 - absError / Math.PI); const allow = absError <= threshold; const rationale = allow ? `LiuHuiPi (k=${k}, ${6 * Math.pow(2, k)}-gon) |est−π| = ${absError.toExponential(4)} ≤ threshold ${threshold}: ` + `π approximation sufficiently accurate. Lean: ${LEAN_THEOREM} @${LEAN_COMMIT.slice(0, 12)}` : `LiuHuiPi (k=${k}, ${6 * Math.pow(2, k)}-gon) |est−π| = ${absError.toExponential(4)} > threshold ${threshold}: ` + `π approximation not yet converged. Lean: ${LEAN_THEOREM} @${LEAN_COMMIT.slice(0, 12)}`; return { allow, rationale, formula: "LiuHuiPi", leanTheorem: LEAN_THEOREM, leanFile: LEAN_FILE, leanCommitSha: LEAN_COMMIT, piEstimate, absError, threshold, lambdaScore, }; }; }