Observing oracle transcripts #
withTranscript records each query and its answer while preserving the oracle's private state.
Entries are stored newest first. Forgetting the transcript recovers the original execution,
including its final private state.
Query budgets (Cslib.OracleComp.IsCostBounded) are properties of the program itself; every
logged run respects them.
This is semantic instrumentation, not a claim that recording arbitrary replies is efficient. In particular, a machine's clock bounds its requests but need not bound the oracle's replies.
Main definitions #
Cslib.OracleComp.Transcript,.withTranscript: typed query logging with private state.
Main results #
Cslib.OracleComp.run_interpret_withTranscript: forgetting the log preserves full execution.Cslib.OracleComp.run_interpret_withTranscript_append: retain an existing transcript suffix.
References #
Adapted from Languages/Probabilistic/Transcript.lean on the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8, using the single OracleComp.interpret interface.
Queries and their typed replies, stored in reverse chronological order.
Instances For
Observe calls without changing the underlying oracle's replies or private state.
Instances For
Forgetting the transcript preserves the result and the oracle's complete final state.
An existing transcript is an untouched suffix of the newly recorded interaction.