From stdpp Require Import prelude. From VLSM.Core Require Import VLSM Composition Equivocation MessageDependencies. From VLSM.Core Require Import VLSMProjections ProjectionTraces.
Sufficient conditions for being a validator for the free composition
IM
satisfies
the channel_authentication_property, the MessageDependencies and
FullMessageDependencies assumptions, the HasBeenSentCapability and
HasBeenReceivedCapability, then any component, which for every valid input
guarantees that the message and all its dependencies are emittable by one
of the components, is a validator for the free composition of IM
(lemma free_valid_message_yields_projection_validator).
Section sec_free_composition_validator. Context `{EqDecision index} `(IM : index -> VLSM message) .
If a component is a message-validator for the free composition, then any
constrained trace of the component lifts to a valid trace of the composition.
index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message∀ i : index, component_message_validator_prop IM (free_constraint IM) i → ∀ (is fi : state (preloaded_with_all_messages_vlsm (IM i))) (tr : list transition_item), finite_constrained_trace_init_to (IM i) is fi tr → finite_valid_trace_init_to (free_composite_vlsm IM) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i fi) (lift_to_composite_finite_trace IM i tr)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message∀ i : index, component_message_validator_prop IM (free_constraint IM) i → ∀ (is fi : state (preloaded_with_all_messages_vlsm (IM i))) (tr : list transition_item), finite_constrained_trace_init_to (IM i) is fi tr → finite_valid_trace_init_to (free_composite_vlsm IM) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i fi) (lift_to_composite_finite_trace IM i tr)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi trifinite_valid_trace_init_to (free_composite_vlsm IM) (lift_to_composite_state' IM i isi) (lift_to_composite_state' IM i fi) (lift_to_composite_finite_trace IM i tri)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi trifinite_constrained_trace_init_to (free_composite_vlsm IM) (lift_to_composite_state' IM i isi) (lift_to_composite_state' IM i fi) (lift_to_composite_finite_trace IM i tri)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi triForall (λ item : transition_item, option_valid_message_prop (free_composite_vlsm IM) (input item)) (lift_to_composite_finite_trace IM i tri)by apply (VLSM_embedding_finite_valid_trace_init_to (lift_to_composite_preloaded_VLSM_embedding IM i)).index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi trifinite_constrained_trace_init_to (free_composite_vlsm IM) (lift_to_composite_state' IM i isi) (lift_to_composite_state' IM i fi) (lift_to_composite_finite_trace IM i tri)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi triForall (λ item : transition_item, option_valid_message_prop (free_composite_vlsm IM) (input item)) (lift_to_composite_finite_trace IM i tri)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi tri∀ x : transition_item, x ∈ lift_to_composite_finite_trace IM i tri → option_valid_message_prop (free_composite_vlsm IM) (input x)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi tri
item: transition_item
Hitem: item ∈ lift_to_composite_finite_trace IM i trioption_valid_message_prop (free_composite_vlsm IM) (input item)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (IM i)
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi tri
itemi: transition_item
Hitem: itemi ∈ trioption_valid_message_prop (free_composite_vlsm IM) (input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) itemi))index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (IM i)
tri: list transition_item
Htri: finite_constrained_trace_init_to (IM i) isi fi tri
itemi: transition_item
pre, suf: list transition_item
Heqtri: tri = pre ++ itemi :: sufoption_valid_message_prop (free_composite_vlsm IM) (input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) itemi))index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (IM i)
tri: list transition_item
Htri: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (IM i)) isi fi tri
itemi: transition_item
pre, suf: list transition_item
Heqtri: tri = pre ++ itemi :: sufoption_valid_message_prop (free_composite_vlsm IM) (input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) itemi))index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (IM i)
tri: list transition_item
Htri: finite_valid_trace_from (preloaded_with_all_messages_vlsm (IM i)) isi tri
itemi: transition_item
pre, suf: list transition_item
Heqtri: tri = pre ++ itemi :: sufoption_valid_message_prop (free_composite_vlsm IM) (input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) itemi))index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (IM i)
tri: list transition_item
Htri: finite_valid_trace_from (preloaded_with_all_messages_vlsm (IM i)) isi tri
itemi: transition_item
pre, suf: list transition_item
Heqtri: tri = pre ++ itemi :: suf
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) (l itemi) (finite_trace_last isi pre, input itemi) (destination itemi, output itemi)option_valid_message_prop (free_composite_vlsm IM) (input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) itemi))index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (IM i)
tri: list transition_item
Htri: finite_valid_trace_from (preloaded_with_all_messages_vlsm (IM i)) isi tri
l: label (IM i)
m: message
destination: state (IM i)
output: option message
pre, suf: list transition_item
Heqtri: tri = pre ++ {| l := l; input := Some m; destination := destination; output := output |} :: suf
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l (finite_trace_last isi pre, Some m) (destination, output)option_valid_message_prop (free_composite_vlsm IM) (Some m)by eapply Hvalid, input_valid_transition_iff; eexists. Qed.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
isi, fi: state (IM i)
tri: list transition_item
Htri: finite_valid_trace_from (preloaded_with_all_messages_vlsm (IM i)) isi tri
l: label (IM i)
m: message
destination: state (IM i)
output: option message
pre, suf: list transition_item
Heqtri: tri = pre ++ {| l := l; input := Some m; destination := destination; output := output |} :: suf
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l (finite_trace_last isi pre, Some m) (destination, output)valid_message_prop {| vlsm_type := composite_type IM; vlsm_machine := {| vlsm_type := free_composite_vlsm IM; vlsm_machine := composite_vlsm IM (free_constraint IM) |} |} m
If a component is a message-validator for the free composition,
then it is also a "full" validator for the free composition.
index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message∀ i : index, component_message_validator_prop IM (free_constraint IM) i → component_projection_validator_prop IM (free_constraint IM) iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message∀ i : index, component_message_validator_prop IM (free_constraint IM) i → component_projection_validator_prop IM (free_constraint IM) iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
Ht: input_constrained (IM i) li (si, iom)valid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
Ht: input_valid (preloaded_with_all_messages_vlsm (IM i)) li (si, iom)valid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (si, iom) (si', oom)valid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htri: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) isi si' (tri ++ [{| l := li; input := iom; destination := si'; output := oom |}])
Hsi': finite_trace_last isi tri = sivalid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htr: finite_valid_trace_from_to (free_composite_vlsm IM) (lift_to_composite_state' IM i isi) (lift_to_composite_state' IM i si') (lift_to_composite_finite_trace IM i (tri ++ [{| l := li; input := iom; destination := si'; output := oom |}]))
Hsi': finite_trace_last isi tri = sivalid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Htr: finite_valid_trace_from_to (free_composite_vlsm IM) (lift_to_composite_state' IM i isi) (lift_to_composite_state' IM i si') (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri ++ map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) [{| l := li; input := iom; destination := si'; output := oom |}])
Hsi': finite_trace_last isi tri = sivalid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Ht: finite_valid_trace_from_to (free_composite_vlsm IM) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri)) (lift_to_composite_state' IM i si') (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) [{| l := li; input := iom; destination := si'; output := oom |}])
Hsi': finite_trace_last isi tri = sivalid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Hv: input_valid (free_composite_vlsm IM) (l (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |})) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri), input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |}))
Hsi': finite_trace_last isi tri = sivalid li (si, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Hv: input_valid (free_composite_vlsm IM) (l (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |})) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri), input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |}))
Hsi': finite_trace_last isi tri = siinput_valid (composite_vlsm IM (free_constraint IM)) (existT i li) (?s, iom)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Hv: input_valid (free_composite_vlsm IM) (l (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |})) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri), input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |}))
Hsi': finite_trace_last isi tri = si?s i = siindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Hv: input_valid (free_composite_vlsm IM) (l (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |})) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri), input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |}))
Hsi': finite_trace_last isi tri = siinput_valid (composite_vlsm IM (free_constraint IM)) (existT i li) (?s, iom)by apply free_composite_vlsm_spec.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Hv: input_valid (free_composite_vlsm IM) (l (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |})) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri), input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |}))
Hsi': finite_trace_last isi tri = siVLSM_incl_part (free_composite_vlsm IM) (constrained_vlsm_machine (free_composite_vlsm IM) (free_constraint IM))index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Hv: input_valid (free_composite_vlsm IM) (l (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |})) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri), input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |}))
Hsi': finite_trace_last isi tri = sifinite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri) i = siby subst si; state_update_simpl. Qed. End sec_free_composition_validator.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
i: index
Hvalid: component_message_validator_prop IM (free_constraint IM) i
li: label (IM i)
si: state (IM i)
iom: option message
si': state (preloaded_with_all_messages_vlsm (IM i))
oom: option message
isi: state (preloaded_with_all_messages_vlsm (IM i))
tri: list transition_item
Hv: input_valid (free_composite_vlsm IM) (l (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |})) (finite_trace_last (lift_to_composite_state' IM i isi) (map (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i)) tri), input (pre_VLSM_embedding_transition_item_project (IM i) (free_composite_vlsm IM) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) {| l := li; input := iom; destination := si'; output := oom |}))
Hsi': finite_trace_last isi tri = sisi = lift_to_composite_state' IM i (finite_trace_last isi tri) i
Section sec_free_composition_message_validator. Context `{EqDecision index} `(IM : index -> VLSM message) `(sender : message -> option validator) (A : validator -> index) (Hchannel : channel_authentication_prop IM A sender) `{FinSet message Cm} (message_dependencies : message -> Cm) (full_message_dependencies : message -> Cm) `{!FullMessageDependencies message_dependencies full_message_dependencies} `{forall i : index, HasBeenSentCapability (IM i)} `{forall i : index, HasBeenReceivedCapability (IM i)} `{forall i : index, MessageDependencies (IM i) message_dependencies} .
Captures the union of constrained messages over all components of
IM
.
Definition emittable (m : message) : Prop :=
exists i, can_emit (preloaded_with_all_messages_vlsm (IM i)) m.
A sufficient condition for determining that a message is valid for the free
composition (see lemma free_valid_message_is_valid).
Inductive free_valid_message (m : message) : Prop :=
{
fvm_emittable : emittable m;
fvm_dependencies : set_Forall free_valid_message (message_dependencies m);
}.
A component satisfies the free_valid_message_condition property
if the validity of receiving a message in a (constrained) state implies the
free_valid_message property for that message
Definition free_valid_message_condition (i : index) : Prop :=
forall l s m,
input_constrained (IM i) l (s, Some m) ->
free_valid_message m.
Under full-node assumptions, free_valid_message_condition can be
simplified to only requiring that the message is emittable.
Definition full_node_free_valid_message_condition (i : index) : Prop := forall l s m, input_constrained (IM i) l (s, Some m) -> emittable m.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ i : index, message_dependencies_full_node_condition_prop (IM i) message_dependencies → full_node_free_valid_message_condition i → ∀ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))) (m : message), input_constrained (IM i) l (s, Some m) → (∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm) → free_valid_message mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ i : index, message_dependencies_full_node_condition_prop (IM i) message_dependencies → full_node_free_valid_message_condition i → ∀ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))) (m : message), input_constrained (IM i) l (s, Some m) → (∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm) → free_valid_message mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
m: message
Hv: input_constrained (IM i) l (s, Some m)
Hobs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmfree_valid_message mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
m: message
Hv: input_constrained (IM i) l (s, Some m)
Hobs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmset_Forall free_valid_message (message_dependencies m)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
m: message
Hv: input_constrained (IM i) l (s, Some m)
Hobs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
dm: message
Hdm: dm ∈ message_dependencies mfree_valid_message dmby apply Hv. Qed.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
m: message
Hv: input_constrained (IM i) l (s, Some m)
Hobs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
dm: message
Hdm: dm ∈ message_dependencies mvalid ?l (s, Some m)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ i : index, message_dependencies_full_node_condition_prop (IM i) message_dependencies → full_node_free_valid_message_condition i → free_valid_message_condition iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ i : index, message_dependencies_full_node_condition_prop (IM i) message_dependencies → full_node_free_valid_message_condition i → free_valid_message_condition iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
m: message
Hv: input_constrained (IM i) l (s, Some m)free_valid_message mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
m: message
Hv: input_constrained (IM i) l (s, Some m)∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
m: message
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (IM i)) s∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om, om': option message
s: state (preloaded_with_all_messages_vlsm (IM i))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', om')
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
dm: message
Hdm: has_been_directly_observed (IM i) s' dmfree_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om, om': option message
s: state (preloaded_with_all_messages_vlsm (IM i))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', om')
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
dm: message
Hdm: (om = Some dm ∨ om' = Some dm) ∨ has_been_directly_observed (IM i) s dmfree_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om': option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, Some dm) (s', om')
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmfree_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmfree_valid_message dmby destruct Ht; eapply full_node_free_valid_message_entails_helper.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om': option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, Some dm) (s', om')
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmfree_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dmfree_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dmfree_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dmfree_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dmset_Forall free_valid_message (message_dependencies dm)index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
dm': message
Hdm': dm' ∈ message_dependencies dmfree_valid_message dm'index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
dm': message
Hdm': dm' ∈ message_dependencies dmdm' ≠ dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
dm': message
Hdm': dm' ∈ message_dependencies dm
H10: dm' ≠ dmfree_valid_message dm'index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
dm': message
Hdm': dm' ∈ message_dependencies dmdm' ≠ dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
Hdm': dm ∈ message_dependencies dmFalseby constructor.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
Hdm': dm ∈ message_dependencies dmmsg_dep_happens_before message_dependencies dm dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
dm': message
Hdm': dm' ∈ message_dependencies dm
H10: dm' ≠ dmfree_valid_message dm'index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
om: option message
s: state (preloaded_with_all_messages_vlsm (IM i))
dm: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, om) (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
dm': message
H10: dm' ≠ dm
Hdm': (om = Some dm' ∨ Some dm = Some dm') ∨ has_been_directly_observed (IM i) s dm'free_valid_message dm'by destruct Ht; eapply full_node_free_valid_message_entails_helper. Qed.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition i
l: label (preloaded_with_all_messages_vlsm (IM i))
m: message
s': state (preloaded_with_all_messages_vlsm (IM i))
l0: label (preloaded_with_all_messages_vlsm (IM i))
s: state (preloaded_with_all_messages_vlsm (IM i))
dm, dm': message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) l0 (s, Some dm') (s', Some dm)
IHHs: ∀ dm : message, has_been_directly_observed (IM i) s dm → free_valid_message dm
Hdm: can_produce (preloaded_with_all_messages_vlsm (IM i)) s' dm
Hdeps: message_dependencies_full_node_condition (IM i) message_dependencies s' dm
H10: dm' ≠ dmfree_valid_message dm'index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ m : message, free_valid_message m → Emittable_from_dependencies_prop IM A sender message_dependencies mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ m : message, free_valid_message m → Emittable_from_dependencies_prop IM A sender message_dependencies mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) mEmittable_from_dependencies_prop IM A sender message_dependencies mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) m
Hauth: channel_authenticated_message A sender i mEmittable_from_dependencies_prop IM A sender message_dependencies mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) m
Hauth: option_map A (sender m) = Some iEmittable_from_dependencies_prop IM A sender message_dependencies mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) m
v: validator
Hsender: sender m = Some v
Hauth: option_map A (Some v) = Some iEmittable_from_dependencies_prop IM A sender message_dependencies mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
v: validator
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m
Hsender: sender m = Some vEmittable_from_dependencies_prop IM A sender message_dependencies mby apply message_dependencies_are_sufficient. Qed.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
v: validator
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m
Hsender: sender m = Some vcan_emit (preloaded_vlsm (IM (A v)) (λ dm : message, dm ∈ message_dependencies m)) mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ dm m : message, msg_dep_rel message_dependencies dm m → free_valid_message m → free_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ dm m : message, msg_dep_rel message_dependencies dm m → free_valid_message m → free_valid_message dmby apply Hall. Qed.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
dm, m: message
Hdep: msg_dep_rel message_dependencies dm m
Hall: set_Forall free_valid_message (message_dependencies m)free_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ m : message, free_valid_message m → valid_message_prop (free_composite_vlsm IM) mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies∀ m : message, free_valid_message m → valid_message_prop (free_composite_vlsm IM) mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message mvalid_message_prop (free_composite_vlsm IM) mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message mall_dependencies_emittable_from_dependencies_prop IM ?A ?sender message_dependencies full_message_dependencies mindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message m∀ dm : message, dm ∈ m :: elements (full_message_dependencies m) → Emittable_from_dependencies_prop IM ?A ?sender message_dependencies dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message m
dm: messagedm = m ∨ dm ∈ elements (full_message_dependencies m) → Emittable_from_dependencies_prop IM ?A ?sender message_dependencies dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message m
dm: message
Hdm: dm ∈ elements (full_message_dependencies m)Emittable_from_dependencies_prop IM A sender message_dependencies dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message m
dm: message
Hdm: dm ∈ elements (full_message_dependencies m)free_valid_message dmindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message m
dm: message
Hdm: msg_dep_happens_before message_dependencies dm mfree_valid_message dmby apply msg_dep_reflects_free_valid_message. Qed. Section sec_free_valid_message_validators.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
m: message
Hm: free_valid_message m
dm: message
Hdm: msg_dep_happens_before message_dependencies dm m∀ dm m : message, msg_dep_rel message_dependencies dm m → free_valid_message m → free_valid_message dm
If the validity predicate of a component implies that its input message
satisfies free_valid_message, then the component is a message validator,
and therefore, a validator for the free composition.
Context (i : index) (Hfree_valid_message_inputs : free_valid_message_condition i) .index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfree_valid_message_inputs: free_valid_message_condition icomponent_message_validator_prop IM (free_constraint IM) iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfree_valid_message_inputs: free_valid_message_condition icomponent_message_validator_prop IM (free_constraint IM) iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfree_valid_message_inputs: free_valid_message_condition i
li: label (preloaded_with_all_messages_vlsm (IM i))
si: state (preloaded_with_all_messages_vlsm (IM i))
im: message
Him: input_constrained (IM i) li (si, Some im)valid_message_prop (composite_vlsm IM (free_constraint IM)) imby eapply free_valid_message_is_valid, Hfree_valid_message_inputs, Him. Qed.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfree_valid_message_inputs: free_valid_message_condition i
li: label (preloaded_with_all_messages_vlsm (IM i))
si: state (preloaded_with_all_messages_vlsm (IM i))
im: message
Him: input_constrained (IM i) li (si, Some im)valid_message_prop {| vlsm_type := free_composite_vlsm IM; vlsm_machine := {| vlsm_type := free_composite_vlsm IM; vlsm_machine := free_composite_vlsm IM |} |} imindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfree_valid_message_inputs: free_valid_message_condition icomponent_projection_validator_prop IM (free_constraint IM) iby apply free_component_message_validator_yields_validator, free_valid_message_yields_message_validator. Qed. End sec_free_valid_message_validators. Section sec_full_node_free_valid_message_validators. Context (i : index) (Hfulli : message_dependencies_full_node_condition_prop (IM i) message_dependencies) (Hfree : full_node_free_valid_message_condition i) .index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfree_valid_message_inputs: free_valid_message_condition icomponent_projection_validator_prop IM (free_constraint IM) iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition icomponent_message_validator_prop IM (free_constraint IM) iby apply free_valid_message_yields_message_validator, full_node_free_valid_message_entails. Qed.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition icomponent_message_validator_prop IM (free_constraint IM) iindex: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition icomponent_projection_validator_prop IM (free_constraint IM) iby apply free_valid_message_yields_projection_validator, full_node_free_valid_message_entails. Qed. End sec_full_node_free_valid_message_validators. End sec_free_composition_message_validator.index: Type
EqDecision0: EqDecision index
message: Type
IM: index → VLSM message
validator: Type
sender: message → option validator
A: validator → index
Hchannel: channel_authentication_prop IM A sender
Cm: Type
H: ElemOf message Cm
H0: Empty Cm
H1: Singleton message Cm
H2: Union Cm
H3: Intersection Cm
H4: Difference Cm
H5: Elements message Cm
EqDecision1: EqDecision message
H6: FinSet message Cm
message_dependencies, full_message_dependencies: message → Cm
FullMessageDependencies0: FullMessageDependencies message_dependencies full_message_dependencies
H7: ∀ i : index, HasBeenSentCapability (IM i)
H8: ∀ i : index, HasBeenReceivedCapability (IM i)
H9: ∀ i : index, MessageDependencies (IM i) message_dependencies
i: index
Hfulli: message_dependencies_full_node_condition_prop (IM i) message_dependencies
Hfree: full_node_free_valid_message_condition icomponent_projection_validator_prop IM (free_constraint IM) i