Skip to content

Major website rewrite#5

Merged
dstebila merged 61 commits intomainfrom
manual-rewrite
Apr 11, 2026
Merged

Major website rewrite#5
dstebila merged 61 commits intomainfrom
manual-rewrite

Conversation

@dstebila
Copy link
Copy Markdown
Member

No description provided.

dstebila and others added 30 commits April 8, 2026 09:32
Create stub landing pages for the new nav hierarchy (manual/, manual/language-reference/,
manual/worked-examples/, researchers/) so later tasks have parents to attach to. Bump
nav_order on existing top-level pages (examples, design, getting-started, guide) so
the new sections take their correct slots while the old pages remain reachable until
decommission.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Migrated install instructions from getting-started.md, expanded with
platform-specific prerequisites (macOS/Windows/Linux), shell-specific venv
activation (bash/zsh, fish, PowerShell), and command-not-found troubleshooting.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
- Correct proof_frog version output example to match real format
- Add PowerShell execution-policy warning for fresh Windows installs
- Include python3-pip in Fedora install command
- Add git submodule update --init to source install

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
10-minute first-run experience using the web editor against examples/joy:
run OTPSecure.proof green, break a single game-sequence line to see the real
diagnostic, fix it, three-sentence conceptual summary. No FrogLang is written
by the reader.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Reference for the six public commands (version, parse, check, prove, describe,
web) with synopsis, behavior, options, examples, and common errors per command.
Authoritative help output captured from the current proof_frog source.
Engine-introspection commands are deliberately excluded; they will live in the
researcher-facing engine-internals page.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Shared syntactic layer of FrogLang: lexical, types, expressions and operators,
sampling, statements, and imports. Draws from SEMANTICS.md Sections 2-4 with
operator-precedence and algebraic-property tables, migrated prose from guide.md,
and gotchas from CLAUDE.md (XOR on bitstrings, non-determinism default,
sampled vs. declared Function<D, R>).

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
- Distinguish status badge color from body text in the broken-proof example
- Add parenthetical explaining the engine's "Succeeded, but is incomplete" wording

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Operational semantics layer between basics.md and the four file-type pages:
adversary model, game execution lifecycle, state semantics, the non-determinism
default and the deterministic/injective annotations, sampling and randomness
including the random-oracle Function<D,R> distinction, composition mechanics
for game+scheme and game+reduction, and the formal definition of
interchangeability. Drawn primarily from SEMANTICS.md sections 6, 7, and 8.3.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Reference for the .primitive file type: block syntax, parameter forms, set field
declarations, method signatures, deterministic/injective modifiers and matching-
modifier rule, with examples drawn from current examples/Primitives/. Cross-
references basics.md for types and execution-model.md (in progress) for oracle
semantics.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Long-form four-file walkthrough mirroring Joy of Cryptography Sec 2.5: define
SymEnc primitive, OneTimeSecrecy game, OTP scheme, and OTPSecure proof. Each
step shows the file growing incrementally with new language constructs explained
at the line that introduces them; CLI alternatives in callouts; empty assume:
block called out as the information-theoretic case. Closing pointer to
worked examples, language reference, and transformations for what's next.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
basics.md:
- Remove fabricated % (remainder) operator (not in FrogLang grammar)

cli-reference.md:
- parse: clarify default output is pretty-printed source, not an AST tree
- check: document success output (`<file> is well-formed.`) and exit code
- check: replace fictitious const/random modifiers with the real
  deterministic/injective modifiers
- web: clarify port 5173 is the starting candidate, not guaranteed; actual
  port is printed at startup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rror with verified output

- tutorial-1: replace "(coming soon)" placeholder with live link to tutorial-2
- tutorial-2: replace the implementer's reconstructed mismatch-signature error
  with the actual format produced by the engine (captured by running check on
  a deliberately-broken copy of OneTimeSecrecy.game)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
User-facing documentation for proof_frog web: launching, layout (file tree,
editor, output, toolbar), editing features (syntax highlighting, Insert wizards
enumerated from wizardConfig, file actions), validation buttons with CLI
equivalents, hop inspection via Describe and Inlined Game, and the limitations
of the web editor relative to the CLI's engine-introspection commands.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
tutorial-2:
- Add screenshot placeholders to Step 1, 2, 3 "Check it" sections (consistency
  with tutorial-1's pattern)

execution-model:
- Note that the compose syntax is a games:-block game step, not a free-standing
  expression
- Tighten Initialize return-type wording: only Phase 2+ initializers may return
  values
- Add the M[k] <- Type; map-entry sampling form to the Sampling section

basics:
- Replace stale "(coming soon)" reference to Execution Model with a live link
  now that the page exists

primitives:
- Add the Group parameter form to Parameter Forms (used by DH-style primitives)
- Replace plain-text reference to Execution Model with a live link

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reference for the .scheme file type: extends syntax, parameter forms (including
primitives as parameters for generic constructions), requires preconditions,
set/integer field assignments, method bodies, the this keyword and its
proof-verification rewriting, the matching-modifiers rule between scheme and
primitive, with worked examples (OTP, TriplingPRG, EncryptThenMAC, KEMDEM)
drawn from current examples/Schemes/.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Reference for the .game file type: two-game requirement and naming conventions,
Game block syntax with Initialize and state fields, oracle methods, export as,
phases (drawn from SEMANTICS.md 5.5; previously undocumented in guide.md, real
example from CCA.game), helper games as a special case, with worked examples
drawn from current examples/Games/ including OneTimeSecrecy, CPA, and
UniqueSampling.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Reference for the .proof file type: helpers section above proof:, the let:,
assume:, lemma:, theorem:, and games: blocks, game step syntax (direct vs.
composed-with-reduction), reductions in detail with the challenger keyword,
the reduction parameter rule, and the standard four-step reduction pattern
boxed from CLAUDE.md. Examples drawn from current examples/Proofs/ including
OTPSecure, OTUCimpliesOTS, and TriplingPRGSecure.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
VSCode extension installation (from VSIX, with build-from-source instructions)
and feature list (syntax highlighting, diagnostics, go-to-definition, hover,
outline, folding, F2 rename, completion and signature help, code lens for
proof hops, proof hops tree view) — each enumerated from the corresponding
file in proof_frog/lsp/. Future Emacs and JetBrains slots noted with eglot/
lsp-mode and LSP4IJ pointers. Adding-a-new-editor paragraph for LSP-aware
editors.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
- Trim from ~1276 to ~700 words: fold syntax highlighting into Layout's editor
  pane bullet, flatten the wizard list to a single sentence (the file-type
  filtering note replaces the misleading "Always-available wizards" heading),
  collapse file actions and limitations sections, condense launching prose
- Replace the implementation-specific "up to port 5272" upper bound with the
  user-facing "scans upward for the next available port" wording (consistent
  with cli-reference.md)
- Tone down the Inlined Game description: drop the unverified "split-pane diff
  against the adjacent step" claim; describe what the modal actually does

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Six sections distinguishing capability limits from trust limits (which live on
researchers/soundness): things FrogLang does not model (SEMANTICS.md sec 10),
capabilities deliberately lacking, capabilities the engine aspires to but is
weak at (verified ENGINE_LIMITATION_DETECTORS from diagnostics.py plus
higher-level soft spots), what kinds of proofs do work well, and how to report
a limitation.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Symptom-keyed reference covering install problems, parse errors, type errors,
proof errors, web editor problems, and "my proof should work but doesn't"
diagnostics. Each entry follows a Symptom/Likely cause/Fix/See also template
with verbatim error wording captured from proof_frog/diagnostics.py,
semantic_analysis.py, proof_engine.py, and frog_parser.py.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Replace four plain-text references with live {% link %} tags, per the
combined schemes/games/proofs review:
- schemes.md: "Basics page" link in the Scheme block section
- proofs.md: "games file-type reference" link in the helpers section
- proofs.md: "Basics language reference page" link in the let: section
- proofs.md: "CLI reference page" link in the --skip-lemmas callout
  (the one explicitly flagged by the implementer as uncertain-path)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
First reduction proof in the manual, walkthrough of
examples/joy/Proofs/Ch2/ChainedEncryptionSecure.proof:
the scheme, the proof structure (two reductions R1 and R2,
each applying the four-step pattern), the four-step reduction
pattern walked through verbatim on one hop, and R1 in detail with
the reduction parameter rule explained. Introduction of
reductions in narrative form for a student who has just finished
Tutorial Part 2.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
User-facing model of the canonicalization pipeline: overview of what prove does,
topic-organized subsections covering what the engine simplifies automatically
(inlining, bitstring/ModInt/group algebra, sample merge/split, random functions,
deterministic/injective annotations, code simplification, SMT-assisted branch
comparison), catalog of load-bearing helper games currently in
examples/Games/Misc/ (UniqueSampling, HashOnUniform, ROMProgramming,
RandomTargetGuessing), the four-step reduction pattern pointer, what the engine
does not do, and a diagnosing-a-failing-hop recipe. Drawn from
extras/docs/transforms/ per-transform docs and SEMANTICS.md.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Motivation, the three tasks of a game-hopping proof (ProofFrog focuses on
task 1), design choices (AST-level, canonicalization, user-supplies-reductions,
C/Java-like syntax), positioning relative to EasyCrypt/CryptoVerif and other
computer-aided cryptography tools, and what ProofFrog is and isn't with the
lineage and acknowledgements. Drawn from design.md and the eprint
(eprint_source/conference_101719.tex sections 1 and 2).

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
- §4 four-step pattern: replace 3-bullet rendition with a 4-entry numbered
  list matching the actual games:-block structure (G_before, Side1 compose R,
  Side2 compose R, G_after)
- §6 "Diagnosing a failing hop": add #prove anchor to the cli-reference link
- §2 ModInt subsection: remove inaccurate examples/Proofs/PRF/ pointer
  (the only PRF proof uses a BitString-based PRF, not modular arithmetic)
- §2 deterministic subsection: replace the inaccurate "PRF proofs rely on
  DeduplicateDeterministicCalls" claim with a correct generic description

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Honest negative soundness story: ProofFrog has no formal soundness proof.
Seven sections: the summary (treat as proof-finding aid, not certifier),
the formal claim stated in terms of interchangeability, the full trust base
(parser, type checker, transformation pipeline, Z3, SymPy, Python runtime),
what is not claimed, mitigations a careful user can apply (small hops,
prove -v inspection, cross-check with pen-and-paper, reporting suspicious
validations), a calibrated comparison to EasyCrypt and CryptoVerif, and
known soundness issues (no dedicated label on the issue tracker yet).

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
Multi-primitive worked example based on the modernized asymmetric-ladder files
at examples/asymmetric-ladder/kemdem/. Walks through Hyb-is-CPA.proof's three-
reduction proof (R1 KEM-CPA real->ideal, R2 SymEnc OTS left->right, R3 KEM-CPA
ideal->real) as a pedagogical graduation from the single-primitive Chained
Encryption example: multi-primitive composition, reductions to the same
assumption in opposite directions, and generic-construction parameter handling.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
- worked-examples/index: intro + links to chained-encryption and kemdem-cpa
- language-reference/index: intro + cheat-sheet table linking all six
  language-reference pages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restructured from the hacs-2026/vibe/ event handout as a researcher-facing
page: explicit framing as a research-and-experimentation tool (not a student
workflow), setup of the MCP server and Claude Code configuration, what works
well, what does not (hallucinated helpers, silent drift, premature success
claims), soundness considerations (vibe-coding does not lower the trust load),
and pointers to the original HACS 2026 demo artifacts which stay on disk.

Co-Authored-By: Claude Sonnet (subagent) <noreply@anthropic.com>
dstebila and others added 27 commits April 8, 2026 14:13
… links

After all the new pages exist on the branch, sweep through and replace every
"(coming soon)" / "(not yet available)" / "(not yet published)" placeholder
with the actual {% link %} tag now that the target pages have landed:

- manual/installation:       Tutorial Part 1 link
- manual/cli-reference:      Engine Internals link (intro-commands paragraph)
- manual/tutorial-2-otp-ots: Chained Encryption + Transformations links
- manual/editor-plugins:     Engine Internals link (3 occurrences)
- manual/limitations:        Soundness link, Transformations link
- manual/transformations:    Soundness link (helper-game callout)
- manual/web-editor:         Engine Internals link
- manual/worked-examples/chained-encryption: Transformations + KEMDEM-CPA links
- researchers/vibe-coding:   Engine Internals link

Also fix a broken {% link %} tag in manual/limitations.md that was split across
two lines (Jekyll tolerated it but the line break was fragile).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rewrites manual/worked-examples/kemdem-cpa.md so it is based on
examples/Proofs/PubEnc/KEMDEMCPA.proof (and its associated primitive,
scheme, and game files) instead of the asymmetric-ladder variant.

- Scheme and instance renamed from Hyb/H to KEMDEM/KD throughout.
- Five reductions instead of three: the in-repo OneTimeSecrecy game
  uses E.KeyGen() rather than uniform sampling, so the proof now
  includes two KeyUniformity hops (one forward, one back) bracketing
  the OTS hop.
- Six conceptual games (Game_0..Game_5) described narratively; no
  explicit intermediate Game definitions, matching the proof file.
- Primitive and game definitions updated: NonNullableSymEnc (total
  Dec), KEM.Encaps returning [SharedSecret, Ciphertext], CPAKEM with
  Real/Random sides and Initialize returning pk, OneTimeSecrecy with
  Eavesdrop oracle, new KeyUniformity game, PubKeyEnc primitive, and
  CPA game with Challenge oracle.
- All file paths and Try-it commands updated to the examples/
  directory layout (Primitives/, Games/, Schemes/PubEnc/,
  Proofs/PubEnc/).
- Section 1 now explains why the key-uniformity assumption is needed
  instead of the "sidestepping" framing.
- Closing Proof Ladders note preserved, with a brief mention that
  that version uses the alternative OTS formulation to collapse the
  five reductions down to three.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reflect the examples repo rename where single-instance assumptions
(formerly OneTimeDDH, OneTimeCDH, OneTimeHashedDDH) now get the simpler
names (DDH, CDH, HashedDDH) and multi-challenge variants get the
MultiChal suffix (DDHMultiChal, HashedDDHMultiChal). Updates all proof
and game links in examples.md, canonicalization.md, and
language-reference/games.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update installation guide and tutorial to recommend `proof_frog
download-examples` as the primary way to obtain examples, replacing
`git clone`. Add download-examples to the CLI reference with full
documentation of --ref and --force options.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@dstebila dstebila merged commit 976ea40 into main Apr 11, 2026
1 check passed
@dstebila dstebila deleted the manual-rewrite branch April 11, 2026 22:44
@dstebila dstebila mentioned this pull request Apr 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant