Theory a0n_agree
section ‹Non-injective Agreement›
theory a0n_agree imports Refinement Agents
begin
text ‹The initial model abstractly specifies entity authentication, where
one agent/role authenticates another. More precisely, this property corresponds
to non-injective agreement on a data set ‹ds›. We use Running and Commit
signals to obtain a protocol-independent extensional specification.›
text ‹Proof tool configuration. Avoid annoying automatic unfolding of
‹dom›.›
declare domIff [simp, iff del]
subsection ‹State›
text ‹Signals. At this stage there are no protocol runs yet. All we model
are the signals that indicate a certain progress of a protocol run by one
agent/role (Commit signal) and the other role (Running signal). The signals
contain a list of agents that are assumed to be honest and a polymorphic data
set to be agreed upon, which is instantiated later.
Usually, the agent list will contain the names of the two agents who want to
agree on the data, but sometimes one of the agents is honest by assumption
(e.g., the server) or the honesty of additional agents needs to be assumed
for the agreement to hold.›