Skip to content

VLSM release 1.3

Latest
Compare
Choose a tag to compare
@palmskog palmskog released this 15 Dec 13:55
· 2 commits to master since this release
362ce16

Release known to be compatible with Coq 8.16 to 8.18 and Coq-std++ 1.9.0.

The theory behind this release is described in this paper. A mapping between different sections in the paper and the Coq definitions/results in the release is given below.

Section 2

Paper Coq
VLSM definition VLSM.Core.VLSM#VLSMType, VLSM.Core.VLSM#VLSMMachine, VLSM.Core.VLSM#VLSM
valid states VLSM.Core.VLSM#valid_state_prop
valid messages VLSM.Core.VLSM#valid_message_prop, VLSM.Core.VLSM#option_valid_message_prop
valid states and messages VLSM.Core.VLSM#valid_state_message_prop
valid transitions VLSM.Core.VLSM#input_valid_transition
finite traces VLSM.Core.VLSM#finite_valid_trace
infinite traces VLSM.Core.VLSM#infinite_valid_trace
terminating traces VLSM.Core.VLSM#terminating_trace_prop
complete traces VLSM.Core.VLSM#complete_trace_prop

Section 3

Paper Coq
free composition definition VLSM.Core.Composition#free_composite_vlsm
constrained composition definition VLSM.Core.Composition#composite_vlsm

Section 4

Paper Coq
projection VLSM definition VLSM.Core.ProjectionTraces#composite_vlsm_constrained_projection
projection of traces VLSM.Core.Validator#component_projection
projection friendliness VLSM.Core.VLSMProjections.VLSMTotalProjection#projection_friendly_prop
sub-trace VLSM.Core.VLSMProjections.VLSMTotalProjection#VLSM_weak_projection_trace_project, VLSM.Core.VLSMProjections#pre_VLSM_projection_finite_trace_project
projection to a subset of components VLSM.Core.SubProjectionTraces#pre_induced_sub_projection
composition of a subset of components VLSM.Core.SubProjectionTraces#free_sub_vlsm_composition

Section 5

Paper Coq
hasBeenSent capability VLSM.Core.Equivocation#oracle_stepwise_props, VLSM.Core.Equivocation#HasBeenSentCapability
channel authentication assumption VLSM.Core.Equivocation#channel_authentication_prop
no equivocation constraint VLSM.Core.Equivocation.NoEquivocation#composite_no_equivocations
message dependencies assumption VLSM.Core.MessageDependencies#MessageDependencies
full message dependencies assumption VLSM.Core.MessageDependencies#FullMessageDependencies
full node assumption VLSM.Core.MessageDependencies#message_dependencies_full_node_condition_prop
state equivocators VLSM.Core.Equivocators.Equivocators#equivocator_vlsm
composition with fixed set of state equivocators VLSM.Core.Equivocators.FixedEquivocation#equivocators_fixed_equivocations_vlsm
composition with fixed set of message equivocators VLSM.Core.Equivocation.MsgDepFixedSetEquivocation#msg_dep_full_node_fixed_set_equivocation_constraint_subsumption
Relaxed model for fixed equivocation VLSM.Core.Equivocation.FixedSetEquivocation#fixed_equivocation_vlsm_composition equivalent to the above under full-node assumptions as per VLSM.Core.Equivocation.MsgDepFixedSetEquivocation#full_node_fixed_equivocation_eq
equivalence between state and message fixed-equivocation for the relaxed model VLSM.Core.Equivocators.FixedEquivocation#fixed_equivocators_valid_trace_project, VLSM.Core.Equivocators.FixedEquivocation#fixed_equivocators_vlsm_projection, VLSM.Core.Equivocators.FixedEquivocationSimulation#no_equivocating_equivocators_finite_valid_trace_init_to_rev
threshold VLSM.Core.ReachableThreshold#ReachableThreshold, using Lib.Measurable for weights
composition with limited state-equivocation VLSM.Core.Equivocators.LimitedStateEquivocation#equivocators_limited_equivocations_vlsm
traces with limited message-equivocation VLSM.Core.Equivocation.LimitedMessageEquivocation#fixed_limited_equivocation_prop
simulation of traces with limited message-equivocation VLSM.Core.Equivocators.LimitedEquivocationSimulation#limited_equivocators_finite_valid_trace_init_to_rev
projection to traces with limited message-equivocation VLSM.Core.Equivocators.LimitedStateEquivocation#equivocators_limited_valid_trace_projects_to_fixed_limited_equivocation
The limited message-equivocation model VLSM.Core.Equivocation.MsgDepLimitedEquivocation#full_node_limited_equivocation_vlsm
equivalence between state and message limited-equivocation VLSM.Core.Equivocators.LimitedStateEquivocation#equivocators_limited_valid_trace_projects_to_annotated_limited_equivocation, VLSM.Core.Equivocators.LimitedEquivocationSimulation#equivocators_limited_valid_trace_projects_to_annotated_limited_equivocation_rev

Section 6

Paper Coq
validator for a composition constraint VLSM.Core.Validator#projection_validator_prop
alternative definition of validator VLSM.Core.Validator#projection_validator_prop_alt
validator definition based on transitions VLSM.Core.Validator#transition_validator
equivalence between definitions VLSM.Core.Validator#projection_validator_messages_transitions, VLSM.Core.Validator#transition_validator_messages
Byzantine node with no attribution VLSM.Core.ByzantineTraces#emit_any_message_vlsm
Byzantine nodes with message attribution VLSM.Core.ByzantineTraces.FixedSetByzantineTraces#emit_any_signed_message_vlsm
the projection of a validator doesn't change in the presence of Byzantine faults VLSM.Core.ByzantineTraces#validator_component_byzantine_fault_tolerance
model for fixed Byzantine behavior VLSM.Core.ByzantineTraces.FixedSetByzantineTraces#non_byzantine_not_equivocating_constraint
equivalence to fixed-set message-equivocation model for validators VLSM.Core.ByzantineTraces.FixedSetByzantineTraces#validator_fixed_non_byzantine_eq_fixed_non_equivocating
traces assuming a limited amount of Byzantine nodes VLSM.Core.ByzantineTraces.LimitedByzantineTraces#limited_byzantine_trace_prop
equivalence to the limited message-equivocation model for validators VLSM.Core.ByzantineTraces.LimitedByzantineTraces#msg_dep_validator_limited_non_equivocating_byzantine_traces_are_limited_non_equivocating

Map of the ELMO example

UMO

Component and protocol

Paper Coq
UMO component VLSM.Examples.ELMO.UMO#UMO_component
extract a unique trace from a state VLSM.Examples.ELMO.UMO#constrained_state_contains_unique_constrained_trace
UMO protocol VLSM.Examples.ELMO.UMO#UMO
extract a trace from a composite state VLSM.Examples.ELMO.UMO#finite_valid_trace_from_to_UMO_state2trace_RUMO

Observability relations

Paper Coq
state-prefix relation VLSM.Examples.ELMO.UMO#state_suffix
state-prefix for sent messages VLSM.Examples.ELMO.UMO#state_suffix_totally_orders_sent_messages_UMO_reachable_aux
sent messages totally ordered by state-prefix VLSM.Examples.ELMO.UMO#state_suffix_totally_orders_sent_messages_UMO_reachable_aux'
characterization for sent messages VLSM.Examples.ELMO.UMO#sentMessages_characterization
directly-observed relation VLSM.Examples.ELMO.UMO#directly_observable
directly-observed for sent messages VLSM.Examples.ELMO.UMO#directly_observable_totally_orders_sent_messages_UMO_reachable
was-sent-before relation VLSM.Examples.ELMO.UMO#was_sent_before
first characterization for was-sent-before relation VLSM.Examples.ELMO.UMO#was_sent_before_characterization_1
second characterization for was-sent-before relation VLSM.Examples.ELMO.UMO#was_sent_before_characterization_2
sent messages totally ordered by was-sent-before VLSM.Examples.ELMO.UMO#was_sent_before_totally_orders_sentMessages_UMO_reachable
sent-comparable relation VLSM.Examples.ELMO.UMO#sent_comparable
incomparable relation VLSM.Examples.ELMO.UMO#incomparable
observation in composite state VLSM.Examples.ELMO.UMO#UMO_obs
characterization for sent messages in composite states VLSM.Examples.ELMO.UMO#UMO_sentMessages_characterization

MO

Component and protocol

Paper Coq
MO component VLSM.Examples.ELMO.MO#MO_component
definition of valid received message in a MO component VLSM.Examples.ELMO.MO#MO_msg_valid
alternative definition for valid received messages VLSM.Examples.ELMO.MO#MO_msg_valid_alt
equivalence of the above definitions VLSM.Examples.ELMO.MO#MO_msg_valid__MO_msg_valid_alt
checking state-prefix between sent observations VLSM.Examples.ELMO.MO#state_suffix_totally_orders_valid_sent_messages'
extract a unique trace from a state VLSM.Examples.ELMO.MO#constrained_state_contains_unique_constrained_trace
valid received message is a constrained state in the sender component VLSM.Examples.ELMO.MO#constrained_state_prop_MO_msg_valid
MO protocol VLSM.Examples.ELMO.MO#MO
extract a trace from a composite state VLSM.Examples.ELMO.MO#finite_valid_trace_from_to_MO_state2trace_RMO

Observability relations

Paper Coq
recursive observations (robs) VLSM.Examples.ELMO.BaseELMO#rec_obs
robs is monotone for states VLSM.Examples.ELMO.MO#rec_obs_input_valid_transition
robs of sent/received messages are in robs VLSM.Examples.ELMO.MO#messages_rec_obs
connection between robs and obs VLSM.Examples.ELMO.MO#unfold_robs
a state is not in its recursive observations VLSM.Examples.ELMO.MO#rec_obs_acyclic
in a composite state in which all last observations are sent observations, there is a state component which was not received as a message in the composite state
recursive observations for composite state
robs is monotone for composite states

Equivocation

Paper Coq
local equivocators VLSM.Examples.ELMO.MO#local_equivocators
global equivocators
equivalent definition for global equivocators in a composite state VLSM.Examples.ELMO.MO#global_equivocators
the two notions of global equivocators coincide
if robs is monotone, then local equivocators are monotone
in a valid transition, local equivocators are monotone
component's local equivocators included in global equivocators VLSM.Examples.ELMO.MO#local_equivocator_inclusion
for any "receive" valid transition, global equivocators are monotone and the only new possible equivocator is the sender of the message
for any "receive" valid transition such that the message was already sent, global equivocators remain the same
construction of tr_min
unfolding constrained composite state
global equivocators are monotone on tr_min
global equivocators on tr_min do not exceed global equivocators on the final state of tr_min

Validators

Paper Coq
every MO component in a MO protocol is a validator for the protocol VLSM.Examples.ELMO.MO#MO_component_validating

ELMO

Component and protocol

Paper Coq
full node assumption for ELMO VLSM.Examples.ELMO.ELMO#full_node
happens-before relation happens_before section variable
simple local equivocators VLSM.Examples.ELMO.ELMO#local_equivocators_simple
simple global equivocators
if messages monotone, then simple local equivocators monotone
full local equivocators VLSM.Examples.ELMO.ELMO#local_equivocators_full
ELMO component VLSM.Examples.ELMO.ELMO#ELMO_component
extract a unique trace from a state VLSM.Examples.ELMO.ELMO#ELMO_unique_traces
ELMO protocol
extract a trace from a composite state

Observability relations

Paper Coq
connection between messages and robs under full node VLSM.Examples.ELMO.ELMO#full_node_messages_iff_rec_obs

Equivocation

Paper Coq
adr of s not in local equivocators of s VLSM.Examples.ELMO.ELMO#local_equivocators_simple_no_self
full local equivocators monotone VLSM.Examples.ELMO.ELMO#local_equivocators_full_nondecreasing
local equivocators, simple local equivocators and full local equivocators coincide VLSM.Examples.ELMO.ELMO#local_equivocators_simple_iff_full, VLSM.Examples.ELMO.ELMO#local_equivocators_iff_simple, VLSM.Examples.ELMO.ELMO#local_equivocators_iff_full
psi_msg_valid_full holds for every constrained state VLSM.Examples.ELMO.ELMO#ELMO_reachable_msg_valid_full
psi_full_node holds for every constrained state and message VLSM.Examples.ELMO.ELMO#reachable_full_node_for_all_messages
every sent message is a constrained state VLSM.Examples.ELMO.ELMO#reachable_sent_messages_reachable
if a received message in a constrained state satisfies the validity predicate then it is a constrained state in the sender component VLSM.Examples.ELMO.ELMO#receivable_messages_reachable
global equivocators and simple global equivocators coincide VLSM.Examples.ELMO.ELMO#ELMO_global_equivocators_iff_simple
unfolding constrained composite state VLSM.Examples.ELMO.ELMO#composite_reachable_predecessor
tr_min is a trace in an ELMO protocol

Validators

Paper Coq
message involved in valid transition from valid composite state is valid VLSM.Examples.ELMO.ELMO#ELMO_valid_states_only_receive_valid_messages
technical lemma VLSM.Examples.ELMO.ELMO#special_receivable_messages_emittable_in_future
key lemma for validator result: VLSM.Examples.ELMO.ELMO#reflecting_composite_for_reachable_component
every ELMO component in an ELMO protocol is a validator for the protocol