Native stateful Fiat-Shamir CMA-to-NMA chain #
This file assembles the non-heap Fiat-Shamir EUF-CMA chain. The top-level statement is factored so the H1/H2/H3 arithmetic is native immediately, while the H5 replay-forking boundary can be ported as a focused lemma.
Tag the CMA-to-NMA simulator handler family from Sigma/CmaToNma.lean
into the local fs_simp simp set. These defs live upstream (not under
Sigma/Stateful/), so we attach the FS-stateful local attribute here rather
than at the definition sites.
CMA-to-NMA adversary #
The CMA-to-NMA reduction at the managed random-oracle interface.
Instances For
Hash-query bound for nmaAdvFromCma.
Wrapper around nmaAdvFromCma that issues one explicit live random-oracle
query for the forgery's hash point (msg, commit) after the source adversary
returns. The extra query makes the verification challenge part of the forkable
transcript: Fork.runTrace always sees (msg, commit) in the live queryLog,
so the replay-forking lemma can rewind at the verification position without any
auxiliary "fresh challenge accepts" assumption on the verifier.
The wrapped adversary issues qH + 1 random-oracle queries (the source's qH
plus the appended verifier-point query). The H5 chain calls Fork.advantage
on this wrapper at slot parameter qH: Fork.forkPoint qH indexes
Fin (qH + 1), which is exactly the right number of slots for qH + 1
queries (the framework's structural +1 is precisely the wrapper's verifier
slot). The replay-forking denominator is therefore qH + 1, not qH + 2.
Instances For
Shifted CMA-to-NMA normal forms #
The stateful shifted form of signedFreshAdv splits at the
candidate/verifier boundary, preserving the cmaToNma signing log between the
two pieces.
H5 fork-side infrastructure #
H5 boundary in shifted-NMA form. This is the fork-side statement after the
native H4 normalization has moved cmaSim to nma ∘ cmaToNma. The bound is in
terms of the verify-wrapped adversary nmaAdvFromCmaWithFinalQuery at fork
slot parameter qH (the framework's Fin (qH + 1) indexing accommodates the
wrapper's verifier-point query).
H3 cost factoring #
Top-level chain factored over H5 #
H4: linked simulation as shifted NMA execution #
Native H4 hop: running the linked simulated CMA game from the direct initial
state is the same as running the NMA game on the cmaToNma-shifted adversary.
The initial direct CMA state decomposes into the empty signing log for
cmaToNma and the initial NMA state for nma.
Native H4 hop in probability form.
Convert the shifted-NMA H5 boundary into the linked simulated-CMA form used by the top-level chain.
Native H5 boundary in the linked simulated-CMA form used by the top-level chain.
Native stateful top-level chain, assuming the H5 replay-forking boundary.
This theorem carries the H1/H2/H3/H4 arithmetic directly in the stateful chain.
The bound is in terms of the verify-wrapped adversary
nmaAdvFromCmaWithFinalQuery at fork slot parameter qH.
Native stateful chain with H5 discharged by the replay-forking boundary, leaving only the public-to-stateful H1/H2 compatibility premise.