lmfdb / index.html
mike dupont
LMFDB Witness Protocol WASM interface
858cd8d
Raw
History Blame Contribute Delete
3.3 kB
<!DOCTYPE html>
<html>
<head>
<title>LMFDB Witness Protocol - Hugging Face Space</title>
<style>
body { font-family: monospace; background: #0a0a0a; color: #0f0; padding: 20px; }
.claim { border: 1px solid #0f0; margin: 10px 0; padding: 10px; }
.protocol { background: #1a1a1a; padding: 15px; margin-bottom: 20px; }
h1 { color: #0ff; }
.field { margin: 5px 0; }
.label { color: #ff0; }
</style>
</head>
<body>
<h1>🔮 LMFDB Witness Protocol</h1>
<div class="protocol" id="protocol"></div>
<h2>Claims</h2>
<div id="claims"></div>
<script type="module">
import init, { LMFDBWitness } from './pkg/lmfdb_witness_wasm.js';
async function run() {
await init();
const witness = new LMFDBWitness();
// Display protocol
const protocol = witness.get_protocol();
document.getElementById('protocol').innerHTML = `
<div class="field"><span class="label">N1 (models):</span> ${protocol.n1}</div>
<div class="field"><span class="label">N2 (size):</span> ${protocol.n2}</div>
<div class="field"><span class="label">N3 (rounds):</span> ${protocol.n3}</div>
<div class="field"><span class="label">N4 (rotations):</span> ${protocol.n4}</div>
<div class="field"><span class="label">Final convergence:</span> ${protocol.final_value}</div>
<div class="field">${witness.run_convergence()}</div>
`;
// Add sample claim
witness.add_claim({
claim: "LMFDB Witness Protocol Initialized",
bet: "Protocol converges in N3 rounds",
proof: "N1 models × N2 size → N3 rounds → N4 rotations",
terms: "N1=24, N2=7, N3=71, N4=17",
vars: "params: ProtocolParams",
preconditions: "N1 > 0 ∧ N2 > 0 ∧ N3 = 71 ∧ N4 = 17",
postconditions: "∃ convergence_value ∈ ℤ/71ℤ",
invariants: "∀ round ∈ [1..N3]: models evolve via F_ω"
});
// Display claims
const claims = witness.get_claims();
const claimsHtml = claims.map(c => `
<div class="claim">
<div class="field"><span class="label">CLAIM:</span> ${c.claim}</div>
<div class="field"><span class="label">BET:</span> ${c.bet}</div>
<div class="field"><span class="label">PROOF:</span> ${c.proof}</div>
<div class="field"><span class="label">TERMS:</span> ${c.terms}</div>
<div class="field"><span class="label">VARS:</span> ${c.vars}</div>
<div class="field"><span class="label">PRE:</span> ${c.preconditions}</div>
<div class="field"><span class="label">POST:</span> ${c.postconditions}</div>
<div class="field"><span class="label">INV:</span> ${c.invariants}</div>
</div>
`).join('');
document.getElementById('claims').innerHTML = claimsHtml;
}
run();
</script>
</body>
</html>