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.
Instances For
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 #
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.
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 #
H4: linked simulation as shifted NMA execution #
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.
Top-level chain factored over H5 #
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.