From Coq Require Import FunctionalExtensionality Reals. From stdpp Require Import prelude finite. From VLSM.Lib Require Import Preamble Measurable FinSetExtras RealsExtras ListExtras. From VLSM.Core Require Import VLSM VLSMProjections Composition Equivocation. From VLSM.Core Require Import ReachableThreshold Validator ProjectionTraces MessageDependencies.From VLSM.Core Require Import AnnotatedVLSM MsgDepLimitedEquivocation. From VLSM.Examples Require Import BaseELMO UMO MO. Create HintDb ELMO_hints. #[local] Hint Resolve submseteq_tail_l : ELMO_hints.
ELMO: Protocol Definitions and Properties for ELMO
Section sec_ELMO. Context {Address : Type} `{EqDecision Address} `{Measurable Address} (State := @State Address) (Observation := @Observation Address) (Message := @Message Address) (threshold : R) `{finite.Finite index} (idx : index -> Address) `{!Inj (=) (=) idx} `{!ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold}.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) thresholdReachableThreshold Address (listset Address) thresholdAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) thresholdReachableThreshold Address (listset Address) thresholdAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
vs: listset (Message_validator idx)
Hvs: (sum_weights vs > threshold)%RReachableThreshold Address (listset Address) thresholdAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
vs: listset (Message_validator idx)
Hvs: (sum_weights vs > threshold)%R∃ vs : listset Address, (sum_weights vs > threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
vs: listset (Message_validator idx)
Hvs: (sum_weights vs > threshold)%R(sum_weights (set_map proj1_sig vs) > threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
vs: listset (Message_validator idx)
Hvs: (sum_weights vs > threshold)%Rsum_weights vs = sum_weights (set_map proj1_sig vs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%RProper (equiv ==> impl) (λ X : listset (Message_validator idx), sum_weights X = sum_weights (set_map proj1_sig X))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%Rsum_weights ∅ = sum_weights (set_map proj1_sig ∅)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R∀ (x : Message_validator idx) (X : listset (Message_validator idx)), x ∉ X → sum_weights X = sum_weights (set_map proj1_sig X) → sum_weights ({[x]} ∪ X) = sum_weights (set_map proj1_sig ({[x]} ∪ X))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%RProper (equiv ==> impl) (λ X : listset (Message_validator idx), sum_weights X = sum_weights (set_map proj1_sig X))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
vs1, vs2: listset (Message_validator idx)
Heqv: vs1 ≡ vs2
Hvs1: sum_weights vs1 = sum_weights (set_map proj1_sig vs1)sum_weights vs2 = sum_weights (set_map proj1_sig vs2)by rewrite Hvs1; apply sum_weights_proper; rewrite Heqv.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
vs1, vs2: listset (Message_validator idx)
Heqv: vs1 ≡ vs2
Hvs1: sum_weights vs1 = sum_weights (set_map proj1_sig vs1)sum_weights vs1 = sum_weights (set_map proj1_sig vs2)by rewrite !sum_weights_empty.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%Rsum_weights ∅ = sum_weights (set_map proj1_sig ∅)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R∀ (x : Message_validator idx) (X : listset (Message_validator idx)), x ∉ X → sum_weights X = sum_weights (set_map proj1_sig X) → sum_weights ({[x]} ∪ X) = sum_weights (set_map proj1_sig ({[x]} ∪ X))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)sum_weights ({[v]} ∪ vs) = sum_weights (set_map proj1_sig ({[v]} ∪ vs))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)(sum_weights {[v]} + sum_weights (set_map proj1_sig vs))%R = sum_weights (set_map proj1_sig ({[v]} ∪ vs))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)(sum_weights {[v]} + sum_weights (set_map proj1_sig vs))%R = sum_weights (set_map proj1_sig {[v]} ∪ set_map proj1_sig vs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)set_map proj1_sig {[v]} ## set_map proj1_sig vsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)(sum_weights {[v]} + sum_weights (set_map proj1_sig vs))%R = (sum_weights (set_map proj1_sig {[v]}) + sum_weights (set_map proj1_sig vs))%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)set_map proj1_sig {[v]} ## set_map proj1_sig vsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs){[`v]} ## set_map proj1_sig vsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)`v ∉ set_map proj1_sig vsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)
Hv: `v ∈ set_map proj1_sig vsv ∈ vsby apply dsig_eq in Hv' as ->.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)
v': {x : Address | bool_decide ((is_Some ∘ adr2idx idx) x)}
Hv': `v = `v'
Hv: v' ∈ vsv ∈ vsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)(sum_weights {[v]} + sum_weights (set_map proj1_sig vs))%R = (sum_weights (set_map proj1_sig {[v]}) + sum_weights (set_map proj1_sig vs))%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)(sum_weights {[v]} + sum_weights (set_map proj1_sig vs))%R = (sum_weights {[`v]} + sum_weights (set_map proj1_sig vs))%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)sum_weights {[`v]} = sum_weights (set_map proj1_sig {[v]})by rewrite !sum_weights_singleton.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)(sum_weights {[v]} + sum_weights (set_map proj1_sig vs))%R = (sum_weights {[`v]} + sum_weights (set_map proj1_sig vs))%Rby apply sum_weights_proper; rewrite set_map_singleton. Qed. Definition immediate_dependency (m1 m2 : Message) : Prop := m1 ∈ messages (state m2).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hgt0: (0 <= threshold)%R
v: Message_validator idx
vs: listset (Message_validator idx)
Hv: v ∉ vs
Hvs: sum_weights vs = sum_weights (set_map proj1_sig vs)sum_weights {[`v]} = sum_weights (set_map proj1_sig {[v]})Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ dm m : Message, immediate_dependency dm m ↔ msg_dep_rel Message_dependencies dm mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ dm m : Message, immediate_dependency dm m ↔ msg_dep_rel Message_dependencies dm mby setoid_rewrite elem_of_list_to_set. Qed. #[local] Notation happensBefore := (tc immediate_dependency). #[local] Infix "<hb" := happensBefore (at level 70).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ dm m : Message, dm ∈ map message (obs (state m)) ↔ dm ∈ list_to_set (map message (obs (state m)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ dm m : Message, dm <hb m ↔ msg_dep_happens_before Message_dependencies dm mby split; (induction 1; [by constructor 1; apply immediate_dependency_msg_dep_rel |]); (etransitivity; [| done]); constructor 1; apply immediate_dependency_msg_dep_rel. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ dm m : Message, dm <hb m ↔ msg_dep_happens_before Message_dependencies dm m
The full node condition says that a node can receive a message
only if the direct observations of that node already include
all messages from the direct observations of the state inside
the message (not necessarily with the same Send/Receive label).
This will let us define validity predicates without needing
to recurse into the states inside observations in a state,
because a correctly-operating node would have checked the
shallow condition for those messages when their observations
were added to the state.
Definition full_node (s : State) (m : Message) : Prop := messages (state m) ⊆+ messages s.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
P: State → Message → Prop
Hnew: ∀ (s : State) (l : Label) (msg : Message), full_node s msg → (∀ m : Message, m ∈ messages s → P s m) → P (s <+> MkObservation l msg) msg
Hprev: ∀ (s : State) (ob : BaseELMO.Observation) (m : Message), P s m → P (s <+> ob) m∀ s : BaseELMO.State, UMO_reachable full_node s → ∀ m : Message, m ∈ messages s → P s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
P: State → Message → Prop
Hnew: ∀ (s : State) (l : Label) (msg : Message), full_node s msg → (∀ m : Message, m ∈ messages s → P s m) → P (s <+> MkObservation l msg) msg
Hprev: ∀ (s : State) (ob : BaseELMO.Observation) (m : Message), P s m → P (s <+> ob) m∀ s : BaseELMO.State, UMO_reachable full_node s → ∀ m : Message, m ∈ messages s → P s mby apply UMO_reachable_elem_of_messages_ind; auto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
P: State → Message → Prop
Hnew: ∀ (s : State) (l : Label) (msg : Message), messages (state msg) ⊆+ messages s → (∀ m : Message, m ∈ messages s → P s m) → P (s <+> MkObservation l msg) msg
Hprev: ∀ (s : State) (ob : BaseELMO.Observation) (m : Message), P s m → P (s <+> ob) m∀ s : BaseELMO.State, UMO_reachable full_node s → ∀ m : Message, m ∈ messages s → P s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ s : BaseELMO.State, UMO_reachable full_node s → ∀ m : Message, m ∈ messages s → ∀ m' : Message, m' <hb m → m' ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ s : BaseELMO.State, UMO_reachable full_node s → ∀ m : Message, m ∈ messages s → ∀ m' : Message, m' <hb m → m' ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: BaseELMO.State
Hs: UMO_reachable full_node s
m: BaseELMO.Message
ob: BaseELMO.Observation
H1: m ∈ messages s
H2: ∀ m' : Message, m' <hb m → m' ∈ messages s
m': Message
H3: m' <hb mm' ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: BaseELMO.State
Hs: UMO_reachable full_node s
IH: ∀ m' : BaseELMO.Message, m' ∈ messages s → ∀ m'0 : Message, m'0 <hb m' → m'0 ∈ messages s
m': Message
Hm': immediate_dependency m' (MkMessage s) ∨ (∃ y : Message, m' <hb y ∧ immediate_dependency y (MkMessage s))m' ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: BaseELMO.State
Hs: UMO_reachable full_node s
mr: BaseELMO.Message
Hmr: messages (state mr) ⊆ messages s
IH: ∀ m' : BaseELMO.Message, m' ∈ messages s → ∀ m'0 : Message, m'0 <hb m' → m'0 ∈ messages s
m': Message
Hm': immediate_dependency m' mr ∨ (∃ y : Message, m' <hb y ∧ immediate_dependency y mr)m' ∈ messages sby itauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: BaseELMO.State
Hs: UMO_reachable full_node s
m: BaseELMO.Message
ob: BaseELMO.Observation
H1: m ∈ messages s
H2: ∀ m' : Message, m' <hb m → m' ∈ messages s
m': Message
H3: m' <hb mm' ∈ messages sby destruct Hm' as [| (m & ? & ?)]; [| eapply IH].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: BaseELMO.State
Hs: UMO_reachable full_node s
IH: ∀ m' : BaseELMO.Message, m' ∈ messages s → ∀ m'0 : Message, m'0 <hb m' → m'0 ∈ messages s
m': Message
Hm': immediate_dependency m' (MkMessage s) ∨ (∃ y : Message, m' <hb y ∧ immediate_dependency y (MkMessage s))m' ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: BaseELMO.State
Hs: UMO_reachable full_node s
mr: BaseELMO.Message
Hmr: messages (state mr) ⊆ messages s
IH: ∀ m' : BaseELMO.Message, m' ∈ messages s → ∀ m'0 : Message, m'0 <hb m' → m'0 ∈ messages s
m': Message
Hm': immediate_dependency m' mr ∨ (∃ y : Message, m' <hb y ∧ immediate_dependency y mr)m' ∈ messages sby eapply IH; [apply Hmr |]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: BaseELMO.State
Hs: UMO_reachable full_node s
mr: BaseELMO.Message
Hmr: messages (state mr) ⊆ messages s
IH: ∀ m' : BaseELMO.Message, m' ∈ messages s → ∀ m'0 : Message, m'0 <hb m' → m'0 ∈ messages s
m', m: Message
H1: m' <hb m
H2: immediate_dependency m mrm' ∈ messages s
Some claims about the full node condition hold for any UMO-based VLSM
whose validity predicate implies the full node condition. By UMO-based we
mean a VLSM built over the ELMO_component_type which also has the same
transition function as UMO/MO, an initial state predicate that ensures
obs of an initial state is empty, and a validity predicate that
implies UMO_component_valid.
If that's all we know about the VLSM, knowing that a State is reachable
in that VLSM is only as informative as knowing that the state is
UMO_reachable full_node.
(This lemma needs no assumption about UMO_component_valid because
reachability is the same anyway, because UMO_component_valid
returns the state unchanged on invalid input.)
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m∀ s : State, constrained_state_prop V s → UMO_reachable full_node sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m∀ s : State, constrained_state_prop V s → UMO_reachable full_node sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s: Stateconstrained_state_prop V s → UMO_reachable full_node sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hs: initial_state_prop sUMO_reachable full_node sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s': VLSM.state (preloaded_with_all_messages_vlsm V)
l: VLSM.label (preloaded_with_all_messages_vlsm V)
om, om': option BaseELMO.Message
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm V) l ( s, om) (s', om')
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hs: initial_state_prop sUMO_reachable full_node sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → BaseELMO.obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
obs: list BaseELMO.Observation
adr: Address
Hs: initial_state_prop (MkState obs adr)UMO_reachable full_node (MkState obs adr)by apply reach_init.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
adr: AddressUMO_reachable full_node (MkState [] adr)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s': VLSM.state (preloaded_with_all_messages_vlsm V)
l: VLSM.label (preloaded_with_all_messages_vlsm V)
om, om': option BaseELMO.Message
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm V) l ( s, om) (s', om')
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s': VLSM.state (preloaded_with_all_messages_vlsm V)
l: VLSM.label (preloaded_with_all_messages_vlsm V)
om, om': option BaseELMO.Message
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hvalid: valid l (s, om)
Ht: transition l (s, om) = (s', om')
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s': VLSM.state (preloaded_with_all_messages_vlsm V)
l: VLSM.label (preloaded_with_all_messages_vlsm V)
om, om': option BaseELMO.Message
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hvalid: valid l (s, om)
Ht: UMO_component_transition l s om = (s', om')
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
m: BaseELMO.Message
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hvalid: valid Receive (s, Some m)
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node (s <+> MkObservation Receive m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hvalid: valid Send (s, None)
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node (s <+> MkObservation Send (MkMessage s))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
m: BaseELMO.Message
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hvalid: valid Receive (s, Some m)
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node (s <+> MkObservation Receive m)by apply reach_recv.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
m: BaseELMO.Message
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hvalid: full_node s m
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node (s <+> MkObservation Receive m)by apply reach_send. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
VM: VLSMMachine ELMO_component_type
V:= {| vlsm_type := ELMO_component_type; vlsm_machine := VM |}: VLSM BaseELMO.Message
VM_transition_is_UMO: ∀ (l : Label) (s : State) (om : option Message), transition l (s, om) = UMO_component_transition l s om
VM_init_empty: ∀ s : State, initial_state_prop s → obs s = []
VM_enforces_full_node: ∀ (l : Label) (s : State) (m : Message), valid l (s, Some m) → full_node s m
s: VLSM.state (preloaded_with_all_messages_vlsm V)
Hvalid: valid Send (s, None)
IHvalid_state_prop: UMO_reachable full_node sUMO_reachable full_node (s <+> MkObservation Send (MkMessage s))
A simplified version of local_equivocators that only checks for
incompatible messages among the immediate observations of the state.
This relies on the full node condition.
Set Warnings "-cannot-define-projection". Record local_equivocators_simple (s : State) (i : Address) : Prop := { les_m1 : Message; les_m2 : Message; les_adr1 : adr (state les_m1) = i; les_adr2 : adr (state les_m2) = i; les_obs_m1 : les_m1 ∈ messages s; les_obs_m2 : les_m2 ∈ messages s; les_incomparable : incomparable les_m1 les_m2; }. Set Warnings "cannot-define-projection".
A variant of local equivocators that relies more on the full node condition
and directly shows how the set of equivocators can grow.
Only a newly received message needs to be checked against previous messages,
other addresses are equivocating if they are equivocating in the previous
state.
Inductive local_equivocators_full_obs : list Observation -> Address -> Prop := | lefo_last : forall (ol : list Observation) (m1 m2 : Message), m2 ∈ receivedMessages' ol -> incomparable m1 m2 -> local_equivocators_full_obs (addObservation' (MkObservation Receive m1) ol) (adr (state m1)) | lefo_prev : forall (ol : list Observation) (l : Label) (m : Message) (i : Address), local_equivocators_full_obs ol i -> local_equivocators_full_obs (addObservation' (MkObservation l m) ol) i.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
o: Observation
a: Addresslocal_equivocators_full_obs (addObservation' o ol) a ↔ a = adr (state (message o)) ∧ label o = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable (message o) m2) ∨ local_equivocators_full_obs ol aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
o: Observation
a: Addresslocal_equivocators_full_obs (addObservation' o ol) a ↔ a = adr (state (message o)) ∧ label o = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable (message o) m2) ∨ local_equivocators_full_obs ol aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
o: Observation
a: Addresslocal_equivocators_full_obs (addObservation' o ol) a → a = adr (state (message o)) ∧ label o = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable (message o) m2) ∨ local_equivocators_full_obs ol aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
o: Observation
a: Addressa = adr (state (message o)) ∧ label o = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable (message o) m2) ∨ local_equivocators_full_obs ol a → local_equivocators_full_obs (addObservation' o ol) aby inversion 1; subst; [left; split_and!; [.. | eexists] | right].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
o: Observation
a: Addresslocal_equivocators_full_obs (addObservation' o ol) a → a = adr (state (message o)) ∧ label o = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable (message o) m2) ∨ local_equivocators_full_obs ol aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
o: Observation
a: Addressa = adr (state (message o)) ∧ label o = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable (message o) m2) ∨ local_equivocators_full_obs ol a → local_equivocators_full_obs (addObservation' o ol) aby intros [(-> & -> & m2 & Hrecv & Hadr & Hincomp) |]; econstructor. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
l: Label
m1: BaseELMO.Message
a: Addressa = adr (state m1) ∧ l = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable m1 m2) ∨ local_equivocators_full_obs ol a → local_equivocators_full_obs (addObservation' (MkObservation l m1) ol) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) thresholdRelDecision local_equivocators_full_obsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) thresholdRelDecision local_equivocators_full_obsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
ol: list Observation
a: AddressDecision (local_equivocators_full_obs ol a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
a: AddressDecision (local_equivocators_full_obs [] a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
a: Address
ob: BaseELMO.Observation
ol: list BaseELMO.Observation
IHol: Decision (local_equivocators_full_obs ol a)Decision (local_equivocators_full_obs (addObservation' ob ol) a)by right; inversion 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
a: AddressDecision (local_equivocators_full_obs [] a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
a: Address
ob: BaseELMO.Observation
ol: list BaseELMO.Observation
IHol: Decision (local_equivocators_full_obs ol a)Decision (local_equivocators_full_obs (addObservation' ob ol) a)by pose proof @list_exist_dec; typeclasses eauto. Defined. Definition local_equivocators_full (s : State) : Address -> Prop := local_equivocators_full_obs (obs s). #[export] Instance local_equivocators_full_dec : RelDecision local_equivocators_full := fun s a => local_equivocators_full_obs_dec (obs s) a.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
a: Address
ob: BaseELMO.Observation
ol: list BaseELMO.Observation
IHol: Decision (local_equivocators_full_obs ol a)Decision (a = adr (state (message ob)) ∧ label ob = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' ol ∧ incomparable (message ob) m2) ∨ local_equivocators_full_obs ol a)
An ELMO component has the same elements as a MO component
except for the validity predicate, which:
- checks message validity
- enforces the full-node condition
- only allows receiving a message if it will not bring the total weight of the locally-visible equivocation above equivocation_threshold
Definition no_self_equiv (s : State) (m : Message) : Prop := adr s = adr (state m) -> m ∈ sentMessages s. Inductive MessageHasSender (m : Message) : Prop := | message_has_sender : forall i, adr (state m) = idx i -> MessageHasSender m. Inductive ELMO_msg_valid_full : Message -> Prop := | MVF_nil : forall m : Message, obs (state m) = [] -> MessageHasSender m -> ELMO_msg_valid_full m | MVF_send : forall m, ELMO_msg_valid_full m -> ELMO_msg_valid_full (m <*> MkObservation Send m) | MVF_recv : forall m mo, full_node (state m) mo -> no_self_equiv (state m) mo -> ELMO_msg_valid_full m -> ELMO_msg_valid_full (m <*> MkObservation Receive mo).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
m: MessageELMO_msg_valid_full m → UMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), full_node s m ∧ no_self_equiv s m) (state m)by induction 1; destruct m as [ms]; cbn in *; [replace ms with (MkState [] (adr ms)) by (apply eq_State; done) | ..]; constructor. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
m: MessageELMO_msg_valid_full m → UMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), full_node s m ∧ no_self_equiv s m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
m: MessageELMO_msg_valid_full m → MessageHasSender mby induction 1; [done | ..]; destruct IHELMO_msg_valid_full; econstructor. Qed. #[local] Instance ELMO_local_equivocation : BasicEquivocation State Address (listset Address) threshold := { is_equivocating := local_equivocators_full; is_equivocating_dec := local_equivocators_full_dec; state_validators := const (list_to_set (map idx (enum index))); }. Definition local_equivocation_limit_ok (s : State) : Prop := not_heavy s. Record ELMO_recv_valid (s : State) (m : Message) : Prop := { ELMO_mv_full_node : full_node s m; ELMO_mv_no_self_equiv : no_self_equiv s m; ELMO_mv_msg_valid_full : ELMO_msg_valid_full m; ELMO_mv_local_equivocation_limit_ok : local_equivocation_limit_ok (s <+> MkObservation Receive m); }. Inductive ELMO_component_valid : Label -> State -> option Message -> Prop := | ELMOCV_Receive : forall (s : State) (m : Message), ELMO_recv_valid s m -> ELMO_component_valid Receive s (Some m) | ELMOCV_Send : forall s : State, ELMO_component_valid Send s None.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
m: MessageELMO_msg_valid_full m → MessageHasSender m
This definition is closer to the way the validity condition
might be defined by hand, but is probably less convenient than
the inductive definition of ELMO_component_valid. So we prove
that they are equivalent.
Definition ELMO_component_valid_alt (l : Label) (s : State) (om : option Message) : Prop := UMO_component_valid l s om /\ (l = Receive -> from_option (ELMO_recv_valid s) False om).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ (l : Label) (s : State) (om : option Message), ELMO_component_valid l s om ↔ ELMO_component_valid_alt l s omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ (l : Label) (s : State) (om : option Message), ELMO_component_valid l s om ↔ ELMO_component_valid_alt l s omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
l: Label
s: State
om: option MessageELMO_component_valid l s om → ELMO_component_valid_alt l s omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
l: Label
s: State
om: option MessageELMO_component_valid_alt l s om → ELMO_component_valid l s omby destruct 1; split; [constructor | auto | constructor | auto].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
l: Label
s: State
om: option MessageELMO_component_valid l s om → ELMO_component_valid_alt l s omby intros [[] Hfo]; constructor; apply Hfo. Qed. Definition ELMO_component_machine (i : index) : VLSMMachine ELMO_component_type := {| initial_state_prop := UMO_component_initial_state_prop (idx i); initial_message_prop := const False; s0 := Inhabited_UMO_component_initial_state_type (idx i); transition := fun l '(st, om) => UMO_component_transition l st om; valid := fun l '(st, om) => ELMO_component_valid l st om; |}. Definition ELMO_component (i : index) : VLSM Message := {| vlsm_type := ELMO_component_type; vlsm_machine := ELMO_component_machine i; |}.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
l: Label
s: State
om: option MessageELMO_component_valid_alt l s om → ELMO_component_valid l s omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: indexComputableSentMessages (ELMO_component i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: indexComputableSentMessages (ELMO_component i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ s : VLSM.state (ELMO_component i), initial_state_prop s → ∀ m : Message, m ∉ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ (l : VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i))) (s : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (im : option Message) (s' : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (om : option Message), input_constrained_transition (ELMO_component i) l ( s, im) (s', om) → ∀ msg : Message, msg ∈ sentMessages s' ↔ field_selector output msg {| l := l; input := im; destination := s'; output := om |} ∨ msg ∈ sentMessages sby intros [] []; cbn in *; subst; cbn; apply not_elem_of_nil.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ s : VLSM.state (ELMO_component i), initial_state_prop s → ∀ m : Message, m ∉ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ (l : VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i))) (s : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (im : option Message) (s' : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (om : option Message), input_constrained_transition (ELMO_component i) l (s, im) (s', om) → ∀ msg : Message, msg ∈ sentMessages s' ↔ field_selector output msg {| l := l; input := im; destination := s'; output := om |} ∨ msg ∈ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
l: Label
s: BaseELMO.State
im: option Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) im
Hv: ELMO_component_valid l s im
Ht: UMO_component_transition l s im = (s', om)
m: Messagem ∈ sentMessages s' ↔ om = Some m ∨ m ∈ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
m0: Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m0)
Hv: ELMO_component_valid Receive (MkState obs adr) (Some m0)
m: Messagem ∈ map message (if decide False then MkObservation Receive m0 :: filter isSend obs else filter isSend obs) ↔ None = Some m ∨ m ∈ map message (filter isSend obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) None
Hv: ELMO_component_valid Send (MkState obs adr) None
m: Messagem ∈ map message (if decide True then MkObservation Send (MkMessage (MkState obs adr)) :: filter isSend obs else filter isSend obs) ↔ Some (MkMessage (MkState obs adr)) = Some m ∨ m ∈ map message (filter isSend obs)by rewrite decide_False; cbn; firstorder congruence.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
m0: Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m0)
Hv: ELMO_component_valid Receive (MkState obs adr) (Some m0)
m: Messagem ∈ map message (if decide False then MkObservation Receive m0 :: filter isSend obs else filter isSend obs) ↔ None = Some m ∨ m ∈ map message (filter isSend obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) None
Hv: ELMO_component_valid Send (MkState obs adr) None
m: Messagem ∈ map message (if decide True then MkObservation Send (MkMessage (MkState obs adr)) :: filter isSend obs else filter isSend obs) ↔ Some (MkMessage (MkState obs adr)) = Some m ∨ m ∈ map message (filter isSend obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) None
Hv: ELMO_component_valid Send (MkState obs adr) None
m: Messagem ∈ MkMessage (MkState obs adr) :: map message (filter isSend obs) ↔ Some (MkMessage (MkState obs adr)) = Some m ∨ m ∈ map message (filter isSend obs)by firstorder congruence. Defined.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) None
Hv: ELMO_component_valid Send (MkState obs adr) None
m: Messagem = MkMessage (MkState obs adr) ∨ m ∈ map message (filter isSend obs) ↔ Some (MkMessage (MkState obs adr)) = Some m ∨ m ∈ map message (filter isSend obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: indexComputableReceivedMessages (ELMO_component i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: indexComputableReceivedMessages (ELMO_component i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ s : VLSM.state (ELMO_component i), initial_state_prop s → ∀ m : Message, m ∉ receivedMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ (l : VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i))) (s : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (im : option Message) (s' : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (om : option Message), input_constrained_transition (ELMO_component i) l ( s, im) (s', om) → ∀ msg : Message, msg ∈ receivedMessages s' ↔ field_selector input msg {| l := l; input := im; destination := s'; output := om |} ∨ msg ∈ receivedMessages sby intros [] []; cbn in *; subst; cbn; apply not_elem_of_nil.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ s : VLSM.state (ELMO_component i), initial_state_prop s → ∀ m : Message, m ∉ receivedMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index∀ (l : VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i))) (s : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (im : option Message) (s' : VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))) (om : option Message), input_constrained_transition (ELMO_component i) l (s, im) (s', om) → ∀ msg : Message, msg ∈ receivedMessages s' ↔ field_selector input msg {| l := l; input := im; destination := s'; output := om |} ∨ msg ∈ receivedMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
l: Label
s: BaseELMO.State
im: option Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) im
Hv: ELMO_component_valid l s im
Ht: UMO_component_transition l s im = (s', om)
m: Messagem ∈ receivedMessages s' ↔ im = Some m ∨ m ∈ receivedMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
m0: Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m0)
Hv: ELMO_component_valid Receive (MkState obs adr) (Some m0)
m: Messagem ∈ map message (if decide True then MkObservation Receive m0 :: filter isReceive obs else filter isReceive obs) ↔ Some m0 = Some m ∨ m ∈ map message (filter isReceive obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) None
Hv: ELMO_component_valid Send (MkState obs adr) None
m: Messagem ∈ map message (if decide False then MkObservation Send (MkMessage (MkState obs adr)) :: filter isReceive obs else filter isReceive obs) ↔ None = Some m ∨ m ∈ map message (filter isReceive obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
m0: Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m0)
Hv: ELMO_component_valid Receive (MkState obs adr) (Some m0)
m: Messagem ∈ map message (if decide True then MkObservation Receive m0 :: filter isReceive obs else filter isReceive obs) ↔ Some m0 = Some m ∨ m ∈ map message (filter isReceive obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
m0: Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m0)
Hv: ELMO_component_valid Receive (MkState obs adr) (Some m0)
m: Messagem ∈ m0 :: map message (filter isReceive obs) ↔ Some m0 = Some m ∨ m ∈ map message (filter isReceive obs)by firstorder congruence.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
m0: Message
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m0)
Hv: ELMO_component_valid Receive (MkState obs adr) (Some m0)
m: Messagem = m0 ∨ m ∈ map message (filter isReceive obs) ↔ Some m0 = Some m ∨ m ∈ map message (filter isReceive obs)by rewrite decide_False; cbn; firstorder congruence. Defined. #[export] Instance HasBeenDirectlyObservedCapability_ELMO_component (i : index) : HasBeenDirectlyObservedCapability (ELMO_component i) := HasBeenDirectlyObservedCapability_from_sent_received (ELMO_component i).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
obs: list BaseELMO.Observation
adr: Address
s': BaseELMO.State
om: option Message
Hvsp: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (MkState obs adr)
Hovmp: option_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) None
Hv: ELMO_component_valid Send (MkState obs adr) None
m: Messagem ∈ map message (if decide False then MkObservation Send (MkMessage (MkState obs adr)) :: filter isReceive obs else filter isReceive obs) ↔ None = Some m ∨ m ∈ map message (filter isReceive obs)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexconstrained_state_prop (ELMO_component i) s ↔ UMO_reachable ELMO_recv_valid s ∧ adr s = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexconstrained_state_prop (ELMO_component i) s ↔ UMO_reachable ELMO_recv_valid s ∧ adr s = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexconstrained_state_prop (ELMO_component i) s ↔ ?BAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: index?B ↔ UMO_reachable ELMO_recv_valid s ∧ adr s = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexconstrained_state_prop (ELMO_component i) s ↔ ?BAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: index∀ si : VLSM.state {| vlsm_type := {| VLSM.state := BaseELMO.State; VLSM.label := Label |}; vlsm_machine := ELMO_component_machine i |}, initial_state_prop si → obs si = []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: index∀ (s : VLSM.state (preloaded_with_all_messages_vlsm {| vlsm_type := {| VLSM.state := BaseELMO.State; VLSM.label := Label |}; vlsm_machine := ELMO_component_machine i |})) (om : option BaseELMO.Message), constrained_state_prop {| vlsm_type := {| VLSM.state := BaseELMO.State; VLSM.label := Label |}; vlsm_machine := ELMO_component_machine i |} s → valid Send (s, om) ↔ om = Noneby inversion 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: index∀ si : VLSM.state {| vlsm_type := {| VLSM.state := BaseELMO.State; VLSM.label := Label |}; vlsm_machine := ELMO_component_machine i |}, initial_state_prop si → obs si = []by cbn; split; inversion 1; [| constructor].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: index∀ (s : VLSM.state (preloaded_with_all_messages_vlsm {| vlsm_type := {| VLSM.state := BaseELMO.State; VLSM.label := Label |}; vlsm_machine := ELMO_component_machine i |})) (om : option BaseELMO.Message), constrained_state_prop {| vlsm_type := {| VLSM.state := BaseELMO.State; VLSM.label := Label |}; vlsm_machine := ELMO_component_machine i |} s → valid Send (s, om) ↔ om = NoneAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexUMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), valid Receive (s, Some m)) s ∧ initial_state_prop (MkState [] (adr s)) ↔ UMO_reachable ELMO_recv_valid s ∧ adr s = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexUMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), valid Receive (s, Some m)) s ↔ UMO_reachable ELMO_recv_valid sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexinitial_state_prop (MkState [] (adr s)) ↔ adr s = idx iby split; apply UMO_reachable_impl; inversion 1; subst; [| constructor].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexUMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), valid Receive (s, Some m)) s ↔ UMO_reachable ELMO_recv_valid sby cbn; firstorder. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: State
i: indexinitial_state_prop (MkState [] (adr s)) ↔ adr s = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ i : index, message_dependencies_full_node_condition_prop (ELMO_component i) Message_dependenciesAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold∀ i : index, message_dependencies_full_node_condition_prop (ELMO_component i) Message_dependenciesAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (ELMO_component i)
m: Message
Hv: valid Receive (s, Some m)
Hfull: full_node s m
ELMO_mv_no_self_equiv0: no_self_equiv s m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s <+> MkObservation Receive m)message_dependencies_full_node_condition (ELMO_component i) Message_dependencies s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (ELMO_component i)
m: Message
Hv: valid Receive (s, Some m)
Hfull: full_node s m
ELMO_mv_no_self_equiv0: no_self_equiv s m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s <+> MkObservation Receive m)
dm: Message
Hdm: dm ∈ Message_dependencies mhas_been_directly_observed (ELMO_component i) s dmAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (ELMO_component i)
m: Message
Hv: valid Receive (s, Some m)
Hfull: full_node s m
ELMO_mv_no_self_equiv0: no_self_equiv s m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s <+> MkObservation Receive m)
dm: Message
Hdm: dm ∈ map message (obs (state m))has_been_directly_observed (ELMO_component i) s dmby destruct Hdm as []; [left | right]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (ELMO_component i)
m: Message
Hv: valid Receive (s, Some m)
Hfull: full_node s m
ELMO_mv_no_self_equiv0: no_self_equiv s m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s <+> MkObservation Receive m)
dm: Message
Hdm: dm ∈ sentMessages s ∨ dm ∈ receivedMessages shas_been_directly_observed (ELMO_component i) s dmAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))constrained_state_prop (ELMO_component i) s → UMO_reachable full_node sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))constrained_state_prop (ELMO_component i) s → UMO_reachable full_node sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
H1: UMO_reachable ELMO_recv_valid sUMO_reachable full_node sby inversion 1. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
H1: UMO_reachable ELMO_recv_valid s∀ (s : BaseELMO.State) (m : BaseELMO.Message), ELMO_recv_valid s m → full_node s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))constrained_state_prop (ELMO_component i) s → UMO_reachable no_self_equiv sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))constrained_state_prop (ELMO_component i) s → UMO_reachable no_self_equiv sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
H1: UMO_reachable ELMO_recv_valid sUMO_reachable no_self_equiv sby inversion 1. Qed. Section sec_ELMO_component_lemmas.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
H1: UMO_reachable ELMO_recv_valid s∀ (s : BaseELMO.State) (m : BaseELMO.Message), ELMO_recv_valid s m → no_self_equiv s m
Context (i : index) (Ei : VLSM Message := ELMO_component i) .Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: Stateconstrained_state_prop Ei s → adr s = idx iby intros [_ Hadr]%ELMO_reachable_view. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: Stateconstrained_state_prop Ei s → adr s = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (l : VLSM.label (preloaded_with_all_messages_vlsm Ei)) (s : State) (om : option Message) (s' : State) (om' : option Message), input_constrained_transition Ei l (s, om) (s', om') → ¬ initial_state_prop s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (l : VLSM.label (preloaded_with_all_messages_vlsm Ei)) (s : State) (om : option Message) (s' : State) (om' : option Message), input_constrained_transition Ei l (s, om) (s', om') → ¬ initial_state_prop s'by inversion Hv; subst; inversion Ht. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
s: State
om: option Message
a: Address
om': option Message
Hv: valid l (s, om)
Ht: transition l (s, om) = (MkState [] a, om')FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (l : VLSM.label (preloaded_with_all_messages_vlsm Ei)) (s : State) (om : option Message) (s' : State) (om' : option Message), input_constrained_transition Ei l (s, om) (s', om') → ∀ (l0 : VLSM.label (preloaded_with_all_messages_vlsm Ei)) (s0 : VLSM.state (preloaded_with_all_messages_vlsm Ei)) (om0 om'0 : option Message), input_constrained_transition Ei l0 (s0, om0) (s', om'0) → l0 = l ∧ s0 = s ∧ om0 = om ∧ om'0 = om'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (l : VLSM.label (preloaded_with_all_messages_vlsm Ei)) (s : State) (om : option Message) (s' : State) (om' : option Message), input_constrained_transition Ei l (s, om) (s', om') → ∀ (l0 : VLSM.label (preloaded_with_all_messages_vlsm Ei)) (s0 : VLSM.state (preloaded_with_all_messages_vlsm Ei)) (om0 om'0 : option Message), input_constrained_transition Ei l0 (s0, om0) (s', om'0) → l0 = l ∧ s0 = s ∧ om0 = om ∧ om'0 = om'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
s: State
om: option Message
s': State
om': option Message
Hvalid: valid l (s, om)
Ht: transition l (s, om) = (s', om')
l0: VLSM.label (preloaded_with_all_messages_vlsm Ei)
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
om0, om'0: option Message
Hvalid0: valid l0 (s0, om0)
Ht0: transition l0 (s0, om0) = (s', om'0)l0 = l ∧ s0 = s ∧ om0 = om ∧ om'0 = om'by replace s0 with s by (apply eq_State; done). Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hvalid: valid Receive (s, Some m)
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
om'0: option Message
m0: Message
Hvalid0: valid Receive (s0, Some m0)
Ht0: transition Receive (s0, Some m0) = (s <+> MkObservation Receive m, om'0)
H1: ELMO_recv_valid s m
H2: ELMO_recv_valid s0 m0
H4: m0 = m
H5: obs s0 = obs s
H6: adr s0 = adr s
H7: None = om'0Receive = Receive ∧ s0 = s ∧ Some m = Some m ∧ None = NoneAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s1 s2 : State) (iom oom : option Message) (lbl : Label), ELMO_component_valid lbl s1 iom → UMO_component_transition lbl s1 iom = (s2, oom) → sizeState s1 < sizeState s2by intros [] s2 [im |] oom []; do 2 inversion_clear 1; cbn; lia. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s1 s2 : State) (iom oom : option Message) (lbl : Label), ELMO_component_valid lbl s1 iom → UMO_component_transition lbl s1 iom = (s2, oom) → sizeState s1 < sizeState s2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageTransitionMonotoneVLSM Ei sizeStateAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageTransitionMonotoneVLSM Ei sizeStateby eapply ELMO_component_valid_transition_size; cbn in *. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s1, s2: VLSM.state Ei
l: VLSM.label Ei
iom, oom: option Message
Hv: valid l (s1, iom)
Ht: transition l (s1, iom) = (s2, oom)sizeState s1 < sizeState s2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s1 s2 : State) (ob : Observation), state_suffix s1 (s2 <+> ob) → s1 = s2 ∨ state_suffix s1 s2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s1 s2 : State) (ob : Observation), state_suffix s1 (s2 <+> ob) → s1 = s2 ∨ state_suffix s1 s2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s1, s2: State
ob: Observation
Hadr: adr s1 = adr (s2 <+> ob)
_o: BaseELMO.Observation
os: list BaseELMO.Observation
Hsuf: obs (s2 <+> ob) = (_o :: os) ++ obs s1
Hstrict: ¬ obs (s2 <+> ob) `suffix_of` obs s1s1 = s2 ∨ state_suffix s1 s2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s1: State
obs: list BaseELMO.Observation
adr: Address
ob: Observation
Hadr: BaseELMO.adr s1 = adr
_o: BaseELMO.Observation
os: list BaseELMO.Observation
Hsuf: addObservation' ob obs = _o :: os ++ BaseELMO.obs s1
Hstrict: ¬ addObservation' ob obs `suffix_of` BaseELMO.obs s1s1 = MkState obs adr ∨ state_suffix s1 (MkState obs adr)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s1: State
adr: Address
ob: Observation
Hadr: BaseELMO.adr s1 = adr
os: list BaseELMO.Observation
Hstrict: ¬ addObservation' ob (os ++ obs s1) `suffix_of` obs s1
Hsuf: addObservation' ob (os ++ obs s1) = ob :: os ++ obs s1s1 = MkState (os ++ obs s1) adr ∨ state_suffix s1 (MkState (os ++ obs s1) adr)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s1: State
adr: Address
ob: Observation
Hadr: BaseELMO.adr s1 = adr
o: BaseELMO.Observation
os: list BaseELMO.Observation
Hstrict: ¬ addObservation' ob ((o :: os) ++ obs s1) `suffix_of` obs s1
Hsuf: addObservation' ob ((o :: os) ++ obs s1) = ob :: (o :: os) ++ obs s1s1 = MkState ((o :: os) ++ obs s1) adr ∨ state_suffix s1 (MkState ((o :: os) ++ obs s1) adr)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s1: State
adr: Address
ob: Observation
Hadr: BaseELMO.adr s1 = adr
o: BaseELMO.Observation
os: list BaseELMO.Observation
Hstrict: ¬ addObservation' ob ((o :: os) ++ obs s1) `suffix_of` obs s1
Hsuf: addObservation' ob ((o :: os) ++ obs s1) = ob :: (o :: os) ++ obs s1strict suffix (obs s1) (obs (MkState ((o :: os) ++ obs s1) adr))Address: Type
obs: list BaseELMO.Observation
o: BaseELMO.Observation
os: list BaseELMO.Observation¬ o :: os ++ obs `suffix_of` obsAddress: Type
obs: list BaseELMO.Observation
o: BaseELMO.Observation
os, os': list BaseELMO.Observation
Heqos: obs = os' ++ o :: os ++ obsFalseAddress: Type
obs: list BaseELMO.Observation
o: BaseELMO.Observation
os, os': list BaseELMO.Observation
Heqos: length obs = length (os' ++ o :: os ++ obs)Falseby lia. Qed.Address: Type
obs: list BaseELMO.Observation
o: BaseELMO.Observation
os, os': list BaseELMO.Observation
Heqos: length obs = length os' + S (length os + length obs)False
There is a unique trace from any prefix of a reachable state to that state.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, sf: Stateconstrained_state_prop Ei sf → s = sf ∨ state_suffix s sf → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, sf: Stateconstrained_state_prop Ei sf → s = sf ∨ state_suffix s sf → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, sf: State
Hsf: constrained_state_prop Ei sf
Hsuf: state_suffix s sf∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: initial_state_prop s0
Hsuf: state_suffix s s0∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: initial_state_prop s0
Hsuf: state_suffix s s0∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: UMO_component_initial_state_prop (idx i) s0
Hsuf: state_suffix s s0∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) yby contradict Hsuf; apply state_suffix_empty_minimal.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hsuf: state_suffix s (MkState [] (idx i))∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s (MkState [] (idx i)) tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) ys = s0 ∨ state_suffix s s0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
IHHsf: state_suffix s0 s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s0 tr) y
Hsuf: state_suffix s0 s'∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y
Hss0: state_suffix s s0∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) ys = s0 ∨ state_suffix s s0by apply state_suffix_addObservation_inv in Hsuf.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
o: BaseELMO.Observation
Hsuf: state_suffix s (s0 <+> o)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s0 <+> o, om')
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) ys = s0 ∨ state_suffix s s0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
IHHsf: state_suffix s0 s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s0 tr) y
Hsuf: state_suffix s0 s'∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y
Hss0: state_suffix s s0∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
IHHsf: state_suffix s0 s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s0 tr) y
Hsuf: state_suffix s0 s'∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
IHHsf: state_suffix s0 s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s0 tr) y
Hsuf: state_suffix s0 s'unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s' tr) [{| l := l; input := om; destination := s'; output := om' |}]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
IHHsf: state_suffix s0 s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s0 tr) y
Hsuf: state_suffix s0 s'∀ x' : list transition_item, finite_constrained_trace_from_to Ei s0 s' x' → [{| l := l; input := om; destination := s'; output := om' |}] = x'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
IHHsf: state_suffix s0 s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s0 s0 tr) y
Hsuf: state_suffix s0 s'
tr': list transition_item
Htr': finite_constrained_trace_from_to Ei s0 s' tr'[{| l := l; input := om; destination := s'; output := om' |}] = tr'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
si, sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (si, om) (sf, om')
IHHsf: state_suffix si si → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si si tr) y
Hsuf: state_suffix si sf
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr': finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
iom, oom: option Message
l0: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l0 (s, iom) (sf, oom)[{| l := l; input := om; destination := sf; output := om' |}] = tr ++ [{| l := l0; input := iom; destination := sf; output := oom |}]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
si, sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (si, om) (sf, om')
IHHsf: state_suffix si si → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si si tr) y
Hsuf: state_suffix si sf
tr: list transition_item
Htr': finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si si tr
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (si, om) (sf, om')[{| l := l; input := om; destination := sf; output := om' |}] = tr ++ [{| l := l; input := om; destination := sf; output := om' |}]by subst.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
si, sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (si, om) (sf, om')
IHHsf: state_suffix si si → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si si tr) y
Hsuf: state_suffix si sf
tr: list transition_item
Htr': tr = []
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (si, om) (sf, om')[{| l := l; input := om; destination := sf; output := om' |}] = tr ++ [{| l := l; input := om; destination := sf; output := om' |}]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y
Hss0: state_suffix s s0∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y
Hss0: state_suffix s s0
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s0 tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei s s0 x' → tr = x'∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s' tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y
Hss0: state_suffix s s0
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s0 tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei s s0 x' → tr = x'unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s' tr) (tr ++ [{| l := l; input := om; destination := s'; output := om' |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y
Hss0: state_suffix s s0
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s0 tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei s s0 x' → tr = x'∀ x' : list transition_item, finite_constrained_trace_from_to Ei s s' x' → tr ++ [{| l := l; input := om; destination := s'; output := om' |}] = x'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (s', om')
Hsuf: state_suffix s s'
IHHsf: state_suffix s s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei s s0 tr) y
Hss0: state_suffix s s0
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s0 tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei s s0 x' → tr = x'
tr': list transition_item
Htr': finite_constrained_trace_from_to Ei s s' tr'tr ++ [{| l := l; input := om; destination := s'; output := om' |}] = tr'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0, sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (sf, om')
si: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hsuf: state_suffix si sf
IHHsf: state_suffix si s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si s0 tr) y
Hss0: state_suffix si s0
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei si s0 tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei si s0 x' → tr = x'
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr0: list transition_item
Htr': finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr0
iom, oom: option Message
l0: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l0 (s, iom) (sf, oom)tr ++ [{| l := l; input := om; destination := sf; output := om' |}] = tr0 ++ [{| l := l0; input := iom; destination := sf; output := oom |}]by f_equal; apply Htr_unique. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
s0, sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (sf, om')
si: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hsuf: state_suffix si sf
IHHsf: state_suffix si s0 → ∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si s0 tr) y
Hss0: state_suffix si s0
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei si s0 tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei si s0 x' → tr = x'
tr0: list transition_item
Htr': finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s0 tr0
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s0, om) (sf, om')tr ++ [{| l := l; input := om; destination := sf; output := om' |}] = tr0 ++ [{| l := l; input := om; destination := sf; output := om' |}]
From every reachable state of an ELMO_component we can extract a unique
trace reaching that state from the initial state.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: Stateconstrained_state_prop Ei sf → ∃ y, unique (λ tr : list transition_item, ∃ si : State, finite_constrained_trace_init_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: Stateconstrained_state_prop Ei sf → ∃ y, unique (λ tr : list transition_item, ∃ si : State, finite_constrained_trace_init_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf∃ y, unique (λ tr : list transition_item, ∃ si : State, finite_constrained_trace_init_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State∃ y, unique (λ tr : list transition_item, ∃ si : State, finite_constrained_trace_init_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State(∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si sf tr) y) → ∃ y, unique (λ tr : list transition_item, ∃ si : State, finite_constrained_trace_init_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State(∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si sf tr) y) → ∃ y, unique (λ tr : list transition_item, ∃ si : State, finite_constrained_trace_init_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei si sf tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei si sf x' → tr = x'∃ y, unique (λ tr : list transition_item, ∃ si : State, finite_constrained_trace_init_to Ei si sf tr) yby intros _tr [[] [H_tr []]]; cbn in *; subst; apply Htr_unique.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei si sf tr
Htr_unique: ∀ x' : list transition_item, finite_constrained_trace_from_to Ei si sf x' → tr = x'∀ x' : list transition_item, (∃ si : State, finite_constrained_trace_init_to Ei si sf x') → tr = x'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State∃ y, unique (λ tr : list transition_item, finite_constrained_trace_from_to Ei si sf tr) yAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.Statesi = sf ∨ state_suffix si sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
si:= MkState [] (idx i): BaseELMO.State
Hneq: si ≠ sfstate_suffix si sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
Hneq: MkState [] (idx i) ≠ sfstrict suffix [] (obs sf)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
Hneq: MkState [] (idx i) ≠ sf¬ obs sf `suffix_of` []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
Hneq: MkState [] (idx i) ≠ sf
os: list BaseELMO.Observation
Hos: [] = os ++ obs sfFalseby contradict Hneq; apply eq_State; [| symmetry; apply ELMO_reachable_adr]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
sf: State
Hsf: constrained_state_prop Ei sf
Hneq: MkState [] (idx i) ≠ sf
os: list BaseELMO.Observation
Hosf: obs sf = []FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s s' : State) (m : Message), UMO_reachable full_node s → full_node s (MkMessage s') → ∀ l : Label, rec_obs s' (MkObservation l m) → ∃ l0 : Label, rec_obs s (MkObservation l0 m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s s' : State) (m : Message), UMO_reachable full_node s → full_node s (MkMessage s') → ∀ l : Label, rec_obs s' (MkObservation l m) → ∃ l0 : Label, rec_obs s (MkObservation l0 m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': State
m: Message
Hs: UMO_reachable full_node s
Hfull: full_node s (MkMessage s')
l: Label
Hm: rec_obs s' (MkObservation l m)∃ l : Label, rec_obs s (MkObservation l m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': State
m: Message
Hs: UMO_reachable full_node s
Hfull: full_node s (MkMessage s')
l: Label
ob: BaseELMO.Observation
Heq_ob: ob = MkObservation l m
Hm: rec_obs s' ob∃ l : Label, rec_obs s (MkObservation l m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
l0: Label
m0: Message
Hfull: full_node s (MkMessage (s0 <+> MkObservation l0 m0))∃ l : Label, rec_obs s (MkObservation l m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
ob': BaseELMO.Observation
Hfull: full_node s (MkMessage (s0 <+> ob'))
l0: Label
m0: Message
IHHm: full_node s (MkMessage s0) → ∀ (l : Label) (m : Message), MkObservation l0 m0 = MkObservation l m → ∃ l0 : Label, rec_obs s (MkObservation l0 m)
Hm: rec_obs s0 (MkObservation l0 m0)∃ l : Label, rec_obs s (MkObservation l m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
m: BaseELMO.Message
Hfull: full_node s (MkMessage (s0 <+> MkObservation Receive m))
l0: Label
m0: Message
IHHm: full_node s (MkMessage (state m)) → ∀ (l : Label) (m : Message), MkObservation l0 m0 = MkObservation l m → ∃ l0 : Label, rec_obs s (MkObservation l0 m)
Hm: rec_obs (state m) (MkObservation l0 m0)∃ l : Label, rec_obs s (MkObservation l m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
l0: Label
m0: Message
Hfull: full_node s (MkMessage (s0 <+> MkObservation l0 m0))∃ l : Label, rec_obs s (MkObservation l m0)by apply elem_of_list_fmap in Hm as [[l' m'] [-> Hm]]; exists l'; apply obs_rec_obs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
l0: Label
m0: Message
Hfull: full_node s (MkMessage (s0 <+> MkObservation l0 m0))
Hm: m0 ∈ messages s∃ l : Label, rec_obs s (MkObservation l m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
ob': BaseELMO.Observation
Hfull: full_node s (MkMessage (s0 <+> ob'))
l0: Label
m0: Message
IHHm: full_node s (MkMessage s0) → ∀ (l : Label) (m : Message), MkObservation l0 m0 = MkObservation l m → ∃ l0 : Label, rec_obs s (MkObservation l0 m)
Hm: rec_obs s0 (MkObservation l0 m0)∃ l : Label, rec_obs s (MkObservation l m0)by revert Hfull; apply submseteq_tail_l.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
ob': BaseELMO.Observation
Hfull: full_node s (MkMessage (s0 <+> ob'))
l0: Label
m0: Message
IHHm: full_node s (MkMessage s0) → ∀ (l : Label) (m : Message), MkObservation l0 m0 = MkObservation l m → ∃ l0 : Label, rec_obs s (MkObservation l0 m)
Hm: rec_obs s0 (MkObservation l0 m0)full_node s (MkMessage s0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
m: BaseELMO.Message
Hfull: full_node s (MkMessage (s0 <+> MkObservation Receive m))
l0: Label
m0: Message
IHHm: full_node s (MkMessage (state m)) → ∀ (l : Label) (m : Message), MkObservation l0 m0 = MkObservation l m → ∃ l0 : Label, rec_obs s (MkObservation l0 m)
Hm: rec_obs (state m) (MkObservation l0 m0)∃ l : Label, rec_obs s (MkObservation l m0)by exists l0; apply (unfold_robs _ _ Hs); right; exists m. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
s0: BaseELMO.State
m: BaseELMO.Message
Hfull: full_node s (MkMessage (s0 <+> MkObservation Receive m))
l0: Label
m0: Message
IHHm: full_node s (MkMessage (state m)) → ∀ (l : Label) (m : Message), MkObservation l0 m0 = MkObservation l m → ∃ l0 : Label, rec_obs s (MkObservation l0 m)
Hm: rec_obs (state m) (MkObservation l0 m0)
H1: m ∈ messages s∃ l : Label, rec_obs s (MkObservation l m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : State, UMO_reachable full_node s → ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : State, UMO_reachable full_node s → ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address∀ m : Message, m ∈ messages (MkState [] a) ↔ (∃ l : Label, rec_obs (MkState [] a) (MkObservation l m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))∀ m : Message, m ∈ messages (s <+> MkObservation l msg) ↔ (∃ l0 : Label, rec_obs (s <+> MkObservation l msg) (MkObservation l0 m))by split; [intros Hm | intros [? Hm]]; inversion Hm.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address∀ m : Message, m ∈ messages (MkState [] a) ↔ (∃ l : Label, rec_obs (MkState [] a) (MkObservation l m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))∀ m : Message, m ∈ messages (s <+> MkObservation l msg) ↔ (∃ l0 : Label, rec_obs (s <+> MkObservation l msg) (MkObservation l0 m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))
m: Messagem ∈ messages (s <+> MkObservation l msg) ↔ (∃ l0 : Label, rec_obs (s <+> MkObservation l msg) (MkObservation l0 m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))
m: Messagem = msg ∨ (∃ l : Label, rec_obs s (MkObservation l m)) ↔ (∃ l0 : Label, rec_obs s (MkObservation l0 m) ∨ MkObservation l0 m = MkObservation l msg ∨ l = Receive ∧ rec_obs (state msg) (MkObservation l0 m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))
m: Messagem = msg ∨ (∃ l : Label, rec_obs s (MkObservation l m)) → ∃ l0 : Label, rec_obs s (MkObservation l0 m) ∨ MkObservation l0 m = MkObservation l msg ∨ l = Receive ∧ rec_obs (state msg) (MkObservation l0 m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))
m: Message(∃ l0 : Label, rec_obs s (MkObservation l0 m) ∨ MkObservation l0 m = MkObservation l msg ∨ l = Receive ∧ rec_obs (state msg) (MkObservation l0 m)) → m = msg ∨ (∃ l : Label, rec_obs s (MkObservation l m))by intros [<- | [l0]]; eauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))
m: Messagem = msg ∨ (∃ l : Label, rec_obs s (MkObservation l m)) → ∃ l0 : Label, rec_obs s (MkObservation l0 m) ∨ MkObservation l0 m = MkObservation l msg ∨ l = Receive ∧ rec_obs (state msg) (MkObservation l0 m)by intros [l0 [| [[= _] | [->]]]]; eauto using full_node_rebase_rec_obs. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
l: Label
msg: BaseELMO.Message
Hs: UMO_reachable full_node s
H1: match l with | Receive => full_node s msg | Send => msg = MkMessage s end
IHHs: ∀ m : Message, m ∈ messages s ↔ (∃ l : Label, rec_obs s (MkObservation l m))
m: Message(∃ l0 : Label, rec_obs s (MkObservation l0 m) ∨ MkObservation l0 m = MkObservation l msg ∨ l = Receive ∧ rec_obs (state msg) (MkObservation l0 m)) → m = msg ∨ (∃ l : Label, rec_obs s (MkObservation l m))
Because of the no_self_equiv assumption,
a component might have received its own messages,
but only messages it also sent.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ m : BaseELMO.Message, adr (state m) = adr s → m ∈ messages s → m ∈ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ m : BaseELMO.Message, adr (state m) = adr s → m ∈ messages s → m ∈ sentMessages sby apply (UMO_reachable_elem_of_messages_ind no_self_equiv (fun s m => adr (state m) = adr s -> m ∈ sentMessages s)); intros; apply elem_of_sentMessages_addObservation; constructor; auto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : State, UMO_reachable no_self_equiv s → ∀ m : BaseELMO.Message, m ∈ messages s → adr (state m) = adr s → m ∈ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s : State) (ob : Observation) (a : Address), local_equivocators_simple (s <+> ob) a → local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s : State) (ob : Observation) (a : Address), local_equivocators_simple (s <+> ob) a → local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
les_obs_m1: les_m1 ∈ messages (s <+> ob)
les_obs_m2: les_m2 ∈ messages (s <+> ob)
les_incomparable: incomparable les_m1 les_m2local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_adr1, les_adr2: adr (state (message ob)) = a
les_incomparable: incomparable (message ob) (message ob)local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m2: Message
les_adr1: adr (state (message ob)) = a
les_adr2: adr (state les_m2) = a
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable (message ob) les_m2local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state (message ob)) = a
Hm1: les_m1 ∈ messages s
les_incomparable: incomparable les_m1 (message ob)local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
Hm1: les_m1 ∈ messages s
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable les_m1 les_m2local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)by destruct les_incomparable as [? []]; constructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_adr1, les_adr2: adr (state (message ob)) = a
les_incomparable: incomparable (message ob) (message ob)local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m2: Message
les_adr1: adr (state (message ob)) = a
les_adr2: adr (state les_m2) = a
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable (message ob) les_m2local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m2: Message
les_adr1: adr (state (message ob)) = a
les_adr2: adr (state les_m2) = a
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable (message ob) les_m2
e: message ob ∈ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m2: Message
les_adr1: adr (state (message ob)) = a
les_adr2: adr (state les_m2) = a
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable (message ob) les_m2
n: message ob ∉ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)by left; exists (message ob) les_m2.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m2: Message
les_adr1: adr (state (message ob)) = a
les_adr2: adr (state les_m2) = a
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable (message ob) les_m2
e: message ob ∈ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)by firstorder.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m2: Message
les_adr1: adr (state (message ob)) = a
les_adr2: adr (state les_m2) = a
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable (message ob) les_m2
n: message ob ∉ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state (message ob)) = a
Hm1: les_m1 ∈ messages s
les_incomparable: incomparable les_m1 (message ob)local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state (message ob)) = a
Hm1: les_m1 ∈ messages s
les_incomparable: incomparable (message ob) les_m1local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state (message ob)) = a
Hm1: les_m1 ∈ messages s
les_incomparable: incomparable (message ob) les_m1
e: message ob ∈ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state (message ob)) = a
Hm1: les_m1 ∈ messages s
les_incomparable: incomparable (message ob) les_m1
n: message ob ∉ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)by left; exists les_m1 (message ob).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state (message ob)) = a
Hm1: les_m1 ∈ messages s
les_incomparable: incomparable (message ob) les_m1
e: message ob ∈ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)by firstorder.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state (message ob)) = a
Hm1: les_m1 ∈ messages s
les_incomparable: incomparable (message ob) les_m1
n: message ob ∉ messages slocal_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)by left; eauto using local_equivocators_simple. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
Hm1: les_m1 ∈ messages s
Hm2: les_m2 ∈ messages s
les_incomparable: incomparable les_m1 les_m2local_equivocators_simple s a ∨ adr (state (message ob)) = a ∧ (message ob ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable (message ob) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ a : Address, local_equivocators_simple (s <+> MkObservation Send (MkMessage s)) a → local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ a : Address, local_equivocators_simple (s <+> MkObservation Send (MkMessage s)) a → local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable no_self_equiv s
a: Address
Ha: local_equivocators_simple (s <+> MkObservation Send (MkMessage s)) alocal_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable no_self_equiv s
m: BaseELMO.Message
Hm: m ∈ messages s
Hincomp: incomparable (MkMessage s) mlocal_equivocators_simple s (adr s)by apply self_messages_sent in Hm; [constructor | ..]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable no_self_equiv s
m: BaseELMO.Message
Hm: m ∈ messages s
Hadr: adr (state (MkMessage s)) = adr (state m)sent_comparable (MkMessage s) m
This lemma is convenient to prove for local_equivocators_simple,
and our assumption is slightly weaker than constrained_state_prop Ei.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ¬ local_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ¬ local_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address¬ local_equivocators_simple (MkState [] a) (adr (MkState [] a))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable no_self_equiv s
IHHs: ¬ local_equivocators_simple s (adr s)¬ local_equivocators_simple (s <+> MkObservation Send (MkMessage s)) (adr (s <+> MkObservation Send (MkMessage s)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
IHHs: ¬ local_equivocators_simple s (adr s)¬ local_equivocators_simple (s <+> MkObservation Receive msg) (adr (s <+> MkObservation Receive msg))by destruct 1; inversion les_obs_m1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address¬ local_equivocators_simple (MkState [] a) (adr (MkState [] a))by contradict IHHs; apply local_equivocators_simple_add_Send in IHHs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable no_self_equiv s
IHHs: ¬ local_equivocators_simple s (adr s)¬ local_equivocators_simple (s <+> MkObservation Send (MkMessage s)) (adr (s <+> MkObservation Send (MkMessage s)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
IHHs: ¬ local_equivocators_simple s (adr s)¬ local_equivocators_simple (s <+> MkObservation Receive msg) (adr (s <+> MkObservation Receive msg))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
IHHs: local_equivocators_simple (s <+> MkObservation Receive msg) (adr (s <+> MkObservation Receive msg))local_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
IHHs: local_equivocators_simple (s <+> MkObservation Receive msg) (adr (s <+> MkObservation Receive msg))local_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2local_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2adr (state msg) = adr s → msg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
H1: adr (state msg) = adr s → msg ∈ messages slocal_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2adr (state msg) = adr s → msg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
Hmsg: adr s = adr (state msg)msg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
ob: BaseELMO.Observation
Hmsg: msg = message ob
Hob: ob ∈ filter isSend (obs s)msg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
ob: BaseELMO.Observation
Hmsg: msg = message ob
Hob: ob ∈ filter isSend (obs s)∃ y : BaseELMO.Observation, msg = message y ∧ y ∈ obs sby apply list_filter_subseteq in Hob.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
ob: BaseELMO.Observation
Hmsg: msg = message ob
Hob: ob ∈ filter isSend (obs s)msg = message ob ∧ ob ∈ obs sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
H1: adr (state msg) = adr s → msg ∈ messages slocal_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
H1: adr (state msg) = adr s → msg ∈ messages s
H2: les_m1 ∈ messages slocal_equivocators_simple s (adr s)by exists les_m1 les_m2. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hno_self_eqv: adr s = adr (state msg) → msg ∈ sentMessages s
Hs: UMO_reachable no_self_equiv s
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = adr s
les_adr2: adr (state les_m2) = adr s
les_obs_m1: les_m1 ∈ messages (s <+> MkObservation Receive msg)
les_obs_m2: les_m2 ∈ messages (s <+> MkObservation Receive msg)
les_incomparable: incomparable les_m1 les_m2
H1: adr (state msg) = adr s → msg ∈ messages s
H2: les_m1 ∈ messages s
H3: les_m2 ∈ messages slocal_equivocators_simple s (adr s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
l: VLSM.label Ei
om: option Message
s': VLSM.state Ei
om': option Messagetransition l (s, om) = (s', om') → ∀ a : Address, local_equivocators_full s a → local_equivocators_full s' aby destruct l, om; cbn; injection 1; intros; subst; try constructor. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
l: VLSM.label Ei
om: option Message
s': VLSM.state Ei
om': option Messagetransition l (s, om) = (s', om') → ∀ a : Address, local_equivocators_full s a → local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
s': VLSM.state Ei
om': option Messagetransition Receive (s, Some m) = (s', om') → ∀ a : Address, local_equivocators_full s' a → local_equivocators_full s a ∨ a = adr (state m)by inversion 1; subst; inversion 1; subst; [right | left]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
s': VLSM.state Ei
om': option Messagetransition Receive (s, Some m) = (s', om') → ∀ a : Address, local_equivocators_full s' a → local_equivocators_full s a ∨ a = adr (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: MessageUMO_reachable no_self_equiv s → no_self_equiv s msg → ∀ i : Address, local_equivocators_simple (s <+> MkObservation Receive msg) i → local_equivocators_simple s i ∨ adr (state msg) = i ∧ i ≠ adr s ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable msg m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: MessageUMO_reachable no_self_equiv s → no_self_equiv s msg → ∀ i : Address, local_equivocators_simple (s <+> MkObservation Receive msg) i → local_equivocators_simple s i ∨ adr (state msg) = i ∧ i ≠ adr s ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable msg m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: Message
Hs: UMO_reachable no_self_equiv s
Hno_equiv: no_self_equiv s msg
a: Address
Ha: local_equivocators_simple (s <+> MkObservation Receive msg) alocal_equivocators_simple s a ∨ adr (state msg) = a ∧ a ≠ adr s ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable msg m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: Message
Hs: UMO_reachable no_self_equiv s
Hno_equiv: no_self_equiv s msg
a: Address
Ha: local_equivocators_simple (s <+> MkObservation Receive msg) a
H1: a ≠ adr (s <+> MkObservation Receive msg)local_equivocators_simple s a ∨ adr (state msg) = a ∧ a ≠ adr s ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable msg m)by itauto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: Message
Hs: UMO_reachable no_self_equiv s
Hno_equiv: no_self_equiv s msg
a: Address
Ha: local_equivocators_simple s a ∨ adr (state msg) = a ∧ (msg ∉ messages s) ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable msg m)
H1: a ≠ adr slocal_equivocators_simple s a ∨ adr (state msg) = a ∧ a ≠ adr s ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable msg m)
Any message in
messages s
which does not have the same address as s
must be found in receivedMessages.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ msg : BaseELMO.Message, adr (state msg) ≠ adr s → msg ∈ messages s → msg ∈ receivedMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ msg : BaseELMO.Message, adr (state msg) ≠ adr s → msg ∈ messages s → msg ∈ receivedMessages sby apply (UMO_reachable_elem_of_messages_ind _ (fun s m => adr (state m) <> adr s -> m ∈ receivedMessages s)); simpl; intros; apply elem_of_receivedMessages_addObservation; constructor; auto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : State, UMO_reachable no_self_equiv s → ∀ msg : BaseELMO.Message, msg ∈ messages s → adr (state msg) ≠ adr s → msg ∈ receivedMessages s
Little lemmas used while proving equivalence between
local_equivocators, local_equivocators_simple,
and local_equivocators_full.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State∀ msg : BaseELMO.Message, msg ∈ receivedMessages s → msg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State∀ msg : BaseELMO.Message, msg ∈ receivedMessages s → msg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: BaseELMO.Message
Hmsg: msg ∈ receivedMessages smsg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: BaseELMO.Message
ob: BaseELMO.Observation
Hmsg: msg = message ob
Hob: ob ∈ filter isReceive (obs s)msg ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: BaseELMO.Message
ob: BaseELMO.Observation
Hmsg: msg = message ob
Hob: ob ∈ filter isReceive (obs s)∃ y : BaseELMO.Observation, msg = message y ∧ y ∈ obs sby eapply list_filter_subseteq. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
msg: BaseELMO.Message
ob: BaseELMO.Observation
Hmsg: msg = message ob
Hob: ob ∈ filter isReceive (obs s)ob ∈ obs sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Addresslocal_equivocators_simple s a → local_equivocators_simple (s <+> ob) aby destruct 1; exists les_m1 les_m2; try (apply elem_of_messages_addObservation; right). Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ob: Observation
a: Addresslocal_equivocators_simple s a → local_equivocators_simple (s <+> ob) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (P : BaseELMO.State → BaseELMO.Message → Prop) (s : State), UMO_reachable P s → ∀ (m : Message) (ob : Observation), rec_obs (state m) ob → m ∈ messages s → rec_obs s obAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (P : BaseELMO.State → BaseELMO.Message → Prop) (s : State), UMO_reachable P s → ∀ (m : Message) (ob : Observation), rec_obs (state m) ob → m ∈ messages s → rec_obs s obby refine (UMO_reachable_elem_of_messages_ind _ _ _ _ _); auto using @rec_obs. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: BaseELMO.State → BaseELMO.Message → Prop∀ s : State, UMO_reachable P s → ∀ m : Message, m ∈ messages s → ∀ ob : Observation, rec_obs (state m) ob → rec_obs s obAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable full_node s → ∀ ob : BaseELMO.Observation, rec_obs s ob → message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable full_node s → ∀ ob : BaseELMO.Observation, rec_obs s ob → message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address
ob: BaseELMO.Observation
Hob: rec_obs (MkState [] a) obmessage ob ∈ messages (MkState [] a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Send (MkMessage s)) obmessage ob ∈ messages (s <+> MkObservation Send (MkMessage s))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) obmessage ob ∈ messages (s <+> MkObservation Receive msg)by inversion Hob.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address
ob: BaseELMO.Observation
Hob: rec_obs (MkState [] a) obmessage ob ∈ messages (MkState [] a)by inversion Hob using rec_obs_send_inv; intros; apply elem_of_messages_addObservation; auto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Send (MkMessage s)) obmessage ob ∈ messages (s <+> MkObservation Send (MkMessage s))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) obmessage ob ∈ messages (s <+> MkObservation Receive msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) obmessage ob = msg ∨ message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) obrec_obs (state msg) ob → message ob = msg ∨ message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) ob
Hmsg: ∀ m : BaseELMO.Message, m ∈ messages (state msg) → m ∈ messages srec_obs (state msg) ob → message ob = msg ∨ message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) ob
Hmsg: ∀ m : BaseELMO.Message, m ∈ messages (state msg) → m ∈ messages s
Hm: ob ∈ obs (state msg)message ob = msg ∨ message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) ob
Hmsg: ∀ m : BaseELMO.Message, m ∈ messages (state msg) → m ∈ messages s
m: BaseELMO.Message
Hm: MkObservation Receive m ∈ obs (state msg)
Hob': rec_obs (state m) obmessage ob = msg ∨ message ob ∈ messages sby right; apply Hmsg, elem_of_list_fmap_1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) ob
Hmsg: ∀ m : BaseELMO.Message, m ∈ messages (state msg) → m ∈ messages s
Hm: ob ∈ obs (state msg)message ob = msg ∨ message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) ob
Hmsg: ∀ m : BaseELMO.Message, m ∈ messages (state msg) → m ∈ messages s
m: BaseELMO.Message
Hm: MkObservation Receive m ∈ obs (state msg)
Hob': rec_obs (state m) obmessage ob = msg ∨ message ob ∈ messages sby right; apply IHHs, (unfold_robs full_node); eauto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hfull: full_node s msg
Hs: UMO_reachable full_node s
ob: BaseELMO.Observation
IHHs: rec_obs s ob → message ob ∈ messages s
Hob: rec_obs (s <+> MkObservation Receive msg) ob
Hmsg: ∀ m : BaseELMO.Message, m ∈ messages (state msg) → m ∈ messages s
m: BaseELMO.Message
Hm: message (MkObservation Receive m) ∈ message <$> obs (state msg)
Hob': rec_obs (state m) obmessage ob = msg ∨ message ob ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ a : Address, local_equivocators_simple s a ↔ local_equivocators_full s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable no_self_equiv s → ∀ a : Address, local_equivocators_simple s a ↔ local_equivocators_full s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable no_self_equiv s
a: Addresslocal_equivocators_simple s a → local_equivocators_full s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable no_self_equiv s
a: Addresslocal_equivocators_full s a → local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable no_self_equiv s
a: Addresslocal_equivocators_simple s a → local_equivocators_full s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a0, a: Addresslocal_equivocators_simple (MkState [] a0) a → local_equivocators_full (MkState [] a0) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s alocal_equivocators_simple (s <+> MkObservation Send (MkMessage s)) a → local_equivocators_full (s <+> MkObservation Send (MkMessage s)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
H1: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s alocal_equivocators_simple (s <+> MkObservation Receive msg) a → local_equivocators_full (s <+> MkObservation Receive msg) aby destruct 1; inversion les_obs_m1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a0, a: Addresslocal_equivocators_simple (MkState [] a0) a → local_equivocators_full (MkState [] a0) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s alocal_equivocators_simple (s <+> MkObservation Send (MkMessage s)) a → local_equivocators_full (s <+> MkObservation Send (MkMessage s)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s a
Ha: local_equivocators_simple (s <+> MkObservation Send (MkMessage s)) alocal_equivocators_full (s <+> MkObservation Send (MkMessage s)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s a
Ha: local_equivocators_simple (s <+> MkObservation Send (MkMessage s)) alocal_equivocators_simple s aby eapply UMO_reachable_impl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s aUMO_reachable no_self_equiv sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
H1: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s alocal_equivocators_simple (s <+> MkObservation Receive msg) a → local_equivocators_full (s <+> MkObservation Receive msg) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
H1: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s a
Ha: local_equivocators_simple (s <+> MkObservation Receive msg) alocal_equivocators_full (s <+> MkObservation Receive msg) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
H1: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
a: Address
IHHs: local_equivocators_simple s a → local_equivocators_full s a
Ha: local_equivocators_simple s a ∨ adr (state msg) = a ∧ a ≠ adr s ∧ (∃ m : BaseELMO.Message, m ∈ messages s ∧ incomparable msg m)local_equivocators_full (s <+> MkObservation Receive msg) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
H1: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
IHHs: local_equivocators_simple s (adr (state msg)) → local_equivocators_full s (adr (state msg))
Hnot_s: adr (state msg) ≠ adr s
m: BaseELMO.Message
Hm: m ∈ messages s
Hincomp: incomparable msg mlocal_equivocators_full (s <+> MkObservation Receive msg) (adr (state msg))by revert Hincomp; apply lefo_last, not_adr_received.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
H1: no_self_equiv s msg
Hs: UMO_reachable no_self_equiv s
IHHs: local_equivocators_simple s (adr (state msg)) → local_equivocators_full s (adr (state msg))
Hnot_s: adr (state msg) ≠ adr s
m: BaseELMO.Message
Hm: m ∈ messages s
Hincomp: incomparable msg m
H2: adr (state m) ≠ adr slocal_equivocators_full (s <+> MkObservation Receive msg) (adr (state msg))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable no_self_equiv s
a: Addresslocal_equivocators_full s a → local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_obs: list BaseELMO.Observation
s_a: Address
Hs: UMO_reachable no_self_equiv (MkState s_obs s_a)
a: Addresslocal_equivocators_full (MkState s_obs s_a) a → local_equivocators_simple (MkState s_obs s_a) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_obs: list BaseELMO.Observation
s_a: Address
Hs: UMO_reachable no_self_equiv (MkState s_obs s_a)
a: Addresslocal_equivocators_full_obs s_obs a → local_equivocators_simple (MkState s_obs s_a) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2local_equivocators_simple (MkState (addObservation' (MkObservation Receive m1) ol) s_a) (adr (state m1))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
l: Label
m: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation l m) ol) s_a)
i0: Address
Hlefo: local_equivocators_full_obs ol i0
IHHlefo: UMO_reachable no_self_equiv (MkState ol s_a) → local_equivocators_simple (MkState ol s_a) i0local_equivocators_simple (MkState (addObservation' (MkObservation l m) ol) s_a) i0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2local_equivocators_simple (MkState (addObservation' (MkObservation Receive m1) ol) s_a) (adr (state m1))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2adr (state m2) = adr (state m1)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2m1 ∈ messages (MkState (addObservation' (MkObservation Receive m1) ol) s_a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2m2 ∈ messages (MkState (addObservation' (MkObservation Receive m1) ol) s_a)by symmetry; apply Hm12.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2adr (state m2) = adr (state m1)by apply elem_of_cons; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2m1 ∈ messages (MkState (addObservation' (MkObservation Receive m1) ol) s_a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2m2 ∈ messages (MkState (addObservation' (MkObservation Receive m1) ol) s_a)by apply received_in_messages.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
m1: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation Receive m1) ol) s_a)
m2: Message
H1: m2 ∈ receivedMessages' ol
Hm12: incomparable m1 m2m2 ∈ messages (MkState ol s_a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
l: Label
m: Message
Hs: UMO_reachable no_self_equiv (MkState (addObservation' (MkObservation l m) ol) s_a)
i0: Address
Hlefo: local_equivocators_full_obs ol i0
IHHlefo: UMO_reachable no_self_equiv (MkState ol s_a) → local_equivocators_simple (MkState ol s_a) i0local_equivocators_simple (MkState (addObservation' (MkObservation l m) ol) s_a) i0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
l: Label
m: Message
Hs: UMO_reachable no_self_equiv (MkState ol s_a <+> MkObservation l m)
i0: Address
Hlefo: local_equivocators_full_obs ol i0
IHHlefo: UMO_reachable no_self_equiv (MkState ol s_a) → local_equivocators_simple (MkState ol s_a) i0local_equivocators_simple (MkState ol s_a <+> MkObservation l m) i0by inversion Hs; destruct s. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s_a: Address
ol: list Observation
l: Label
m: Message
Hs: UMO_reachable no_self_equiv (MkState ol s_a <+> MkObservation l m)
i0: Address
Hlefo: local_equivocators_full_obs ol i0
IHHlefo: UMO_reachable no_self_equiv (MkState ol s_a) → local_equivocators_simple (MkState ol s_a) i0UMO_reachable no_self_equiv (MkState ol s_a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable full_node s → ∀ a : Address, local_equivocators s a ↔ local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable full_node s → ∀ a : Address, local_equivocators s a ↔ local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
a: Address
lceqv_ob1, lceqv_ob2: BaseELMO.Observation
lceqv_adr1: adr (state (message lceqv_ob1)) = a
lceqv_adr2: adr (state (message lceqv_ob2)) = a
lceqv_rec_obs1: rec_obs s lceqv_ob1
lceqv_rec_obs2: rec_obs s lceqv_ob2
lceqv_incomparable: incomparable (message lceqv_ob1) (message lceqv_ob2)local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
les_obs_m1: les_m1 ∈ messages s
les_obs_m2: les_m2 ∈ messages s
les_incomparable: incomparable les_m1 les_m2local_equivocators s aby exists (message lceqv_ob1) (message lceqv_ob2); auto using reachable_obs_msg.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
a: Address
lceqv_ob1, lceqv_ob2: BaseELMO.Observation
lceqv_adr1: adr (state (message lceqv_ob1)) = a
lceqv_adr2: adr (state (message lceqv_ob2)) = a
lceqv_rec_obs1: rec_obs s lceqv_ob1
lceqv_rec_obs2: rec_obs s lceqv_ob2
lceqv_incomparable: incomparable (message lceqv_ob1) (message lceqv_ob2)local_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
les_obs_m1: les_m1 ∈ messages s
les_obs_m2: les_m2 ∈ messages s
les_incomparable: incomparable les_m1 les_m2local_equivocators s aby exists (MkObservation l1 les_m1) (MkObservation l2 les_m2); auto using reachable_obs_msg. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable full_node s
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
l1: Label
Hm1: rec_obs s (MkObservation l1 les_m1)
l2: Label
Hm2: rec_obs s (MkObservation l2 les_m2)
les_incomparable: incomparable les_m1 les_m2local_equivocators s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), full_node s m ∧ no_self_equiv s m) s → ∀ a : Address, local_equivocators s a ↔ local_equivocators_full s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: StateUMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), full_node s m ∧ no_self_equiv s m) s → ∀ a : Address, local_equivocators s a ↔ local_equivocators_full s aby rewrite local_equivocators_iff_simple; [apply local_equivocators_simple_iff_full |]; revert Hs; apply UMO_reachable_impl; itauto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable (λ (s : BaseELMO.State) (m : BaseELMO.Message), full_node s m ∧ no_self_equiv s m) s
a: Addresslocal_equivocators s a ↔ local_equivocators_full s a
The msg_valid_full predicate holds for any reachable state,
even though it is only explicitly checked when receiving messages.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : State, constrained_state_prop Ei s → ELMO_msg_valid_full (MkMessage s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : State, constrained_state_prop Ei s → ELMO_msg_valid_full (MkMessage s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable ELMO_recv_valid s
Hi: adr s = idx iELMO_msg_valid_full (MkMessage s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address
Hi: adr (MkState [] a) = idx iELMO_msg_valid_full (MkMessage (MkState [] a))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hi: adr (s <+> MkObservation Send (MkMessage s)) = idx i
IHHs: ELMO_msg_valid_full (MkMessage s)ELMO_msg_valid_full (MkMessage (s <+> MkObservation Send (MkMessage s)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hi: adr (s <+> MkObservation Receive msg) = idx i
IHHs: ELMO_msg_valid_full (MkMessage s)ELMO_msg_valid_full (MkMessage (s <+> MkObservation Receive msg))by constructor; [| eexists].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
a: Address
Hi: adr (MkState [] a) = idx iELMO_msg_valid_full (MkMessage (MkState [] a))by constructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hi: adr (s <+> MkObservation Send (MkMessage s)) = idx i
IHHs: ELMO_msg_valid_full (MkMessage s)ELMO_msg_valid_full (MkMessage (s <+> MkObservation Send (MkMessage s)))by eapply MVF_recv in IHHs; [| apply Hvalid..]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hi: adr (s <+> MkObservation Receive msg) = idx i
IHHs: ELMO_msg_valid_full (MkMessage s)ELMO_msg_valid_full (MkMessage (s <+> MkObservation Receive msg))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: Stateconstrained_state_prop (ELMO_component i') s → ∀ m : Message, m ∈ messages s → full_node s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: Stateconstrained_state_prop (ELMO_component i') s → ∀ m : Message, m ∈ messages s → full_node s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: State
Hs: UMO_reachable ELMO_recv_valid s∀ m : Message, m ∈ messages s → full_node s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
a: Address∀ m : Message, m ∈ messages (MkState [] a) → full_node (MkState [] a) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m∀ m : Message, m ∈ messages (s <+> MkObservation Send (MkMessage s)) → full_node (s <+> MkObservation Send (MkMessage s)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m∀ m : Message, m ∈ messages (s <+> MkObservation Receive msg) → full_node (s <+> MkObservation Receive msg) mby inversion 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
a: Address∀ m : Message, m ∈ messages (MkState [] a) → full_node (MkState [] a) mby intros m [-> | Hm%IHHs]%elem_of_messages_addObservation; apply submseteq_cons.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m∀ m : Message, m ∈ messages (s <+> MkObservation Send (MkMessage s)) → full_node (s <+> MkObservation Send (MkMessage s)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m∀ m : Message, m ∈ messages (s <+> MkObservation Receive msg) → full_node (s <+> MkObservation Receive msg) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m
m: Message
Hm: m ∈ messages (s <+> MkObservation Receive msg)full_node (s <+> MkObservation Receive msg) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m
m: Message
Hm: m ∈ messages (s <+> MkObservation Receive msg)full_node s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s mfull_node s (message (MkObservation Receive msg))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m
m: Message
Hm: m ∈ messages sfull_node s mby apply Hvalid.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s mfull_node s (message (MkObservation Receive msg))by apply IHHs in Hm. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
IHHs: ∀ m : Message, m ∈ messages s → full_node s m
m: Message
Hm: m ∈ messages sfull_node s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s, ms: Stateconstrained_state_prop (ELMO_component i') s → MkMessage ms ∈ sentMessages s → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s, ms: Stateconstrained_state_prop (ELMO_component i') s → MkMessage ms ∈ sentMessages s → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s, ms: State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i'
Hms: MkMessage ms ∈ sentMessages sconstrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
s, ms: State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i'
Hms: MkMessage ms ∈ sentMessages sUMO_reachable ELMO_recv_valid ms ∧ adr ms = idx i'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
ms: State
a: Address
Hadr: adr (MkState [] a) = idx i'
Hms: MkMessage ms ∈ sentMessages (MkState [] a)UMO_reachable ELMO_recv_valid ms ∧ adr ms = idx i'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
ms: State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Send (MkMessage s)) = idx i'
Hms: MkMessage ms ∈ sentMessages (s <+> MkObservation Send (MkMessage s))
IHHs: adr s = idx i' → MkMessage ms ∈ sentMessages s → UMO_reachable ELMO_recv_valid ms ∧ adr ms = idx i'UMO_reachable ELMO_recv_valid ms ∧ adr ms = idx i'by apply not_elem_of_nil in Hms.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
ms: State
a: Address
Hadr: adr (MkState [] a) = idx i'
Hms: MkMessage ms ∈ sentMessages (MkState [] a)UMO_reachable ELMO_recv_valid ms ∧ adr ms = idx i'by apply elem_of_sentMessages_addObservation in Hms as [[[= ->] _] | Hms]; auto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
i': index
ms: State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Send (MkMessage s)) = idx i'
Hms: MkMessage ms ∈ sentMessages (s <+> MkObservation Send (MkMessage s))
IHHs: adr s = idx i' → MkMessage ms ∈ sentMessages s → UMO_reachable ELMO_recv_valid ms ∧ adr ms = idx i'UMO_reachable ELMO_recv_valid ms ∧ adr ms = idx i'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messageconstrained_state_prop Ei s → m ∈ sentMessages s → adr (state m) = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messageconstrained_state_prop Ei s → m ∈ sentMessages s → adr (state m) = idx iby eapply ELMO_reachable_adr, reachable_sent_messages_reachable. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
state: BaseELMO.State
Hs: constrained_state_prop Ei s
Hm: MkMessage state ∈ sentMessages sadr (BaseELMO.state (MkMessage state)) = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messageconstrained_state_prop Ei s → m ∈ messages s → ELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messageconstrained_state_prop Ei s → m ∈ messages s → ELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hm: m ∈ messages sELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : State, UMO_reachable ELMO_recv_valid s → ∀ m : Message, m ∈ messages s → adr s = idx i → ELMO_msg_valid_full mby intros; apply ELMO_reachable_msg_valid_full, ELMO_reachable_view. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → (∀ m' : BaseELMO.Message, m' ∈ messages s → adr s = idx i → ELMO_msg_valid_full m') → adr (s <+> MkObservation Send (MkMessage s)) = idx i → ELMO_msg_valid_full (MkMessage s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messagefull_node s m → ∀ a : Address, local_equivocators_simple (state m) a → local_equivocators_simple (s <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messagefull_node s m → ∀ a : Address, local_equivocators_simple (state m) a → local_equivocators_simple (s <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ms: BaseELMO.State
Hfull: full_node s (MkMessage ms)
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
les_obs_m1: les_m1 ∈ messages ms
les_obs_m2: les_m2 ∈ messages ms
les_incomparable: incomparable les_m1 les_m2local_equivocators_simple (s <+> MkObservation Receive (MkMessage ms)) aby eauto using local_equivocators_simple. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
ms: BaseELMO.State
Hfull: full_node s (MkMessage ms)
a: Address
les_m1, les_m2: Message
les_adr1: adr (state les_m1) = a
les_adr2: adr (state les_m2) = a
les_obs_m1: les_m1 ∈ messages ms
les_obs_m2: les_m2 ∈ messages ms
les_incomparable: incomparable les_m1 les_m2
H1: ∀ x : BaseELMO.Message, x ∈ messages ms → x ∈ messages (s <+> MkObservation Receive (MkMessage ms))local_equivocators_simple (s <+> MkObservation Receive (MkMessage ms)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messagefull_node s m → no_self_equiv s m → UMO_reachable no_self_equiv s → UMO_reachable no_self_equiv (state m) → local_equivocation_limit_ok (s <+> MkObservation Receive m) → local_equivocation_limit_ok (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messagefull_node s m → no_self_equiv s m → UMO_reachable no_self_equiv s → UMO_reachable no_self_equiv (state m) → local_equivocation_limit_ok (s <+> MkObservation Receive m) → local_equivocation_limit_ok (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hfull: full_node s m
Hno_self: no_self_equiv s m
Hs: UMO_reachable no_self_equiv s
Hms: UMO_reachable no_self_equiv (state m)
Hs': local_equivocation_limit_ok (s <+> MkObservation Receive m)local_equivocation_limit_ok (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hfull: full_node s m
Hno_self: no_self_equiv s m
Hs: UMO_reachable no_self_equiv s
Hms: UMO_reachable no_self_equiv (state m)
Hs': local_equivocation_limit_ok (s <+> MkObservation Receive m)(equivocation_fault (state m) <= equivocation_fault (s <+> MkObservation Receive m))%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hfull: full_node s m
Hno_self: no_self_equiv s m
Hs: UMO_reachable no_self_equiv s
Hms: UMO_reachable no_self_equiv (state m)
Hs': local_equivocation_limit_ok (s <+> MkObservation Receive m)
a: Address
Ha: local_equivocators_full (state m) alocal_equivocators_full (s <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hfull: full_node s m
Hno_self: no_self_equiv s m
Hs: UMO_reachable no_self_equiv s
Hms: UMO_reachable no_self_equiv (state m)
Hs': local_equivocation_limit_ok (s <+> MkObservation Receive m)
a: Address
Ha: local_equivocators_simple (state m) alocal_equivocators_full (s <+> MkObservation Receive m) aby apply equivocators_of_msg_subset_of_recv. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hfull: full_node s m
Hno_self: no_self_equiv s m
Hs: UMO_reachable no_self_equiv s
Hms: UMO_reachable no_self_equiv (state m)
Hs': local_equivocation_limit_ok (s <+> MkObservation Receive m)
a: Address
Ha: local_equivocators_simple (state m) alocal_equivocators_simple (s <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: ObservationELMO_msg_valid_full (m <*> ob) → ELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: ObservationELMO_msg_valid_full (m <*> ob) → ELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: Observation
H1: ELMO_msg_valid_full (m <*> ob)
m0: Message
Hobs: obs (state (m <*> ob)) = []
H2: MessageHasSender (m <*> ob)
H3: m0 = m <*> obELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: Observation
H1: ELMO_msg_valid_full (m <*> ob)
m0: Message
H2: ELMO_msg_valid_full m0
H3: MkObservation Send m0 = ob
H4: obs (state m0) = obs (state m)
H5: adr (state m0) = adr (state m)ELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: Observation
H1: ELMO_msg_valid_full (m <*> ob)
m0: BaseELMO.Message
mo: Message
H2: full_node (state m0) mo
H3: no_self_equiv (state m0) mo
H4: ELMO_msg_valid_full m0
H5: MkObservation Receive mo = ob
H6: obs (state m0) = obs (state m)
H7: adr (state m0) = adr (state m)ELMO_msg_valid_full mby inversion Hobs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: Observation
H1: ELMO_msg_valid_full (m <*> ob)
m0: Message
Hobs: obs (state (m <*> ob)) = []
H2: MessageHasSender (m <*> ob)
H3: m0 = m <*> obELMO_msg_valid_full mby replace m with m0 by (apply eq_Message; done).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: Observation
H1: ELMO_msg_valid_full (m <*> ob)
m0: Message
H2: ELMO_msg_valid_full m0
H3: MkObservation Send m0 = ob
H4: obs (state m0) = obs (state m)
H5: adr (state m0) = adr (state m)ELMO_msg_valid_full mby replace m with m0 by (apply eq_Message; done). Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
ob: Observation
H1: ELMO_msg_valid_full (m <*> ob)
m0: BaseELMO.Message
mo: Message
H2: full_node (state m0) mo
H3: no_self_equiv (state m0) mo
H4: ELMO_msg_valid_full m0
H5: MkObservation Receive mo = ob
H6: obs (state m0) = obs (state m)
H7: adr (state m0) = adr (state m)ELMO_msg_valid_full mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messageadr s ≠ adr (state m) → no_self_equiv s mby unfold no_self_equiv. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Messageadr s ≠ adr (state m) → no_self_equiv s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: BaseELMO.Message
ob: BaseELMO.Observationfull_node s (m <*> ob) → full_node s mby apply submseteq_tail_l. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: BaseELMO.Message
ob: BaseELMO.Observationfull_node s (m <*> ob) → full_node s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: Message → Message → Prop(∀ m om : Message, m = om → P m om) → ∀ m om : Message, ELMO_msg_valid_full (m <*> MkObservation Send om) → P m omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: Message → Message → Prop(∀ m om : Message, m = om → P m om) → ∀ m om : Message, ELMO_msg_valid_full (m <*> MkObservation Send om) → P m omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: Message → Message → Prop
Hm: ∀ m om : Message, m = om → P m om
m, om: MessageELMO_msg_valid_full (m <*> MkObservation Send om) → P m omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: Message → Message → Prop
Hm: ∀ m om : Message, m = om → P m om
m, om: Message
H1: ELMO_msg_valid_full (m <*> MkObservation Send om)
m0: Message
Hobs: obs (state (m <*> MkObservation Send om)) = []
H2: MessageHasSender (m <*> MkObservation Send om)
H3: m0 = m <*> MkObservation Send omP m omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: Message → Message → Prop
Hm: ∀ m om : Message, m = om → P m om
m, om: Message
H1: ELMO_msg_valid_full (m <*> MkObservation Send om)
m0: Message
H2: ELMO_msg_valid_full om
H3: m0 = om
H4: obs (state om) = obs (state m)
H5: adr (state om) = adr (state m)P m omby inversion Hobs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: Message → Message → Prop
Hm: ∀ m om : Message, m = om → P m om
m, om: Message
H1: ELMO_msg_valid_full (m <*> MkObservation Send om)
m0: Message
Hobs: obs (state (m <*> MkObservation Send om)) = []
H2: MessageHasSender (m <*> MkObservation Send om)
H3: m0 = m <*> MkObservation Send omP m omby apply Hm, eq_Message. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
P: Message → Message → Prop
Hm: ∀ m om : Message, m = om → P m om
m, om: Message
H1: ELMO_msg_valid_full (m <*> MkObservation Send om)
m0: Message
H2: ELMO_msg_valid_full om
H3: m0 = om
H4: obs (state om) = obs (state m)
H5: adr (state om) = adr (state m)P m omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Messageincomparable m1 m2 ↔ adr (state m1) = adr (state m2) ∧ m1 ≠ m2 ∧ (m1 ∉ sentMessages (state m2)) ∧ m2 ∉ sentMessages (state m1)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Messageincomparable m1 m2 ↔ adr (state m1) = adr (state m2) ∧ m1 ≠ m2 ∧ (m1 ∉ sentMessages (state m2)) ∧ m2 ∉ sentMessages (state m1)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Messageincomparable m1 m2 → adr (state m1) = adr (state m2) ∧ m1 ≠ m2 ∧ (m1 ∉ sentMessages (state m2)) ∧ m2 ∉ sentMessages (state m1)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Messageadr (state m1) = adr (state m2) ∧ m1 ≠ m2 ∧ (m1 ∉ sentMessages (state m2)) ∧ m2 ∉ sentMessages (state m1) → incomparable m1 m2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Messageincomparable m1 m2 → adr (state m1) = adr (state m2) ∧ m1 ≠ m2 ∧ (m1 ∉ sentMessages (state m2)) ∧ m2 ∉ sentMessages (state m1)by repeat split; contradict Hnot; subst; constructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Message
Hadr: adr (state m1) = adr (state m2)
Hnot: ¬ sent_comparable m1 m2m1 ≠ m2 ∧ (m1 ∉ sentMessages (state m2)) ∧ m2 ∉ sentMessages (state m1)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Messageadr (state m1) = adr (state m2) ∧ m1 ≠ m2 ∧ (m1 ∉ sentMessages (state m2)) ∧ m2 ∉ sentMessages (state m1) → incomparable m1 m2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Message
Hadr: adr (state m1) = adr (state m2)
Hneq: m1 ≠ m2
Hnot_m12: m1 ∉ sentMessages (state m2)
Hnot_m21: m2 ∉ sentMessages (state m1)incomparable m1 m2by destruct 1 as [| m1 m2 [] | m1 m2 []]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m1, m2: Message
Hadr: adr (state m1) = adr (state m2)
Hneq: m1 ≠ m2
Hnot_m12: m1 ∉ sentMessages (state m2)
Hnot_m21: m2 ∉ sentMessages (state m1)¬ sent_comparable m1 m2Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.Stateadr (state m) ≠ adr v → constrained_state_prop Ei v → m' ∉ receivedMessages v → m ∉ receivedMessages v → ELMO_recv_valid v m' → local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob)) → local_equivocation_limit_ok (v <+> MkObservation Receive m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.Stateadr (state m) ≠ adr v → constrained_state_prop Ei v → m' ∉ receivedMessages v → m ∉ receivedMessages v → ELMO_recv_valid v m' → local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob)) → local_equivocation_limit_ok (v <+> MkObservation Receive m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))local_equivocation_limit_ok (v <+> MkObservation Receive m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))(equivocation_fault (v <+> MkObservation Receive m) <= equivocation_fault (v <+> MkObservation Receive (m <*> ob)))%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))∀ a : Address, local_equivocators_full (v <+> MkObservation Receive m) a → local_equivocators_full (v <+> MkObservation Receive (m <*> ob)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))∀ a : Address, local_equivocators_full v'' a → local_equivocators_full v' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
k: Address
Hk: local_equivocators_full v'' klocal_equivocators_full v' kAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hincomp: incomparable (message (MkObservation Receive m)) ulocal_equivocators_full v' (adr (state (message (MkObservation Receive m))))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hincomp: incomparable (message (MkObservation Receive m)) uincomparable m' uAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))incomparable m' uAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))m' ∉ sentMessages (state u)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))u ∉ sentMessages (state m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))m' ∉ sentMessages (state u)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)m' ∈ receivedMessages vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)UMO_reachable no_self_equiv vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)m' ∈ messages vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)UMO_reachable no_self_equiv vby apply ELMO_reachable_view in Hv as [].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)UMO_reachable ELMO_recv_valid vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)m' ∈ messages vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)m' ∈ ?lAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)?l ⊆+ messages vby apply elem_of_messages; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)m' ∈ ?lAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)messages (state u) ⊆+ messages vby apply elem_of_messages; right.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))
Hm': m' ∈ sentMessages (state u)u ∈ messages vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
u: BaseELMO.Message
Hu: u ∈ receivedMessages' (obs v)
Hadr: adr (state (message (MkObservation Receive m))) = adr (state u)
Hneq: message (MkObservation Receive m) ≠ u
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state u)
H_m2_m1: u ∉ sentMessages (state (message (MkObservation Receive m)))u ∉ sentMessages (state m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
ob: BaseELMO.Observation
m':= m <*> ob: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> ob))
H_m2_m1: message ob ∉ sentMessages (state (message (MkObservation Receive m)))
H_m1_m2: message (MkObservation Receive m) ∉ sentMessages (state (message ob))
Hneq: message (MkObservation Receive m) ≠ message ob
Hadr: adr (state (message (MkObservation Receive m))) = adr (state (message ob))
Hu: message ob ∈ receivedMessages' (obs v)
Hob: isSend obFalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
om: BaseELMO.Message
m':= m <*> MkObservation Send om: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> MkObservation Send om))
H_m2_m1: om ∉ sentMessages (state m)
H_m1_m2: m ∉ sentMessages (state om)
Hadr: adr (state m) = adr (state om)
Hu: om ∈ receivedMessages' (obs v)m = omby inversion Hmv; [| apply eq_Message]. Qed. Hint Resolve equivocation_limit_recv_msg_prefix_ok : ELMO_hints. Hint Resolve full_node_prefix adr_neq_no_self_equiv ELMO_msg_valid_prefix : ELMO_hints.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
v: State
m: Message
om: BaseELMO.Message
m':= m <*> MkObservation Send om: BaseELMO.Message
v':= v <+> MkObservation Receive m': BaseELMO.State
v'':= v <+> MkObservation Receive m: BaseELMO.State
Hadrs: adr (state m) ≠ adr v
Hv: constrained_state_prop Ei v
Hfresh_m': m' ∉ receivedMessages v
Hfresh_m: m ∉ receivedMessages v
Hvalid: ELMO_recv_valid v m'
Hs': local_equivocation_limit_ok (v <+> MkObservation Receive (m <*> MkObservation Send om))
H_m2_m1: om ∉ sentMessages (state m)
H_m1_m2: m ∉ sentMessages (state om)
Hadr: adr (state m) = adr (state om)
Hu: om ∈ receivedMessages' (obs v)
Hmv: ELMO_msg_valid_full m'm = omAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
m: Message
ob: Observationconstrained_state_prop Ei s → m <*> ob ∉ receivedMessages s → m ∉ receivedMessages s → adr s ≠ adr (state m) → ELMO_recv_valid s (m <*> ob) → ELMO_recv_valid s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
m: Message
ob: Observationconstrained_state_prop Ei s → m <*> ob ∉ receivedMessages s → m ∉ receivedMessages s → adr s ≠ adr (state m) → ELMO_recv_valid s (m <*> ob) → ELMO_recv_valid s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
m: Message
ob: Observation
H1: constrained_state_prop Ei s
H2: m <*> ob ∉ receivedMessages s
H3: m ∉ receivedMessages s
H4: adr s ≠ adr (state m)
Hrecv: ELMO_recv_valid s (m <*> ob)ELMO_recv_valid s mby constructor; eauto with ELMO_hints. Qed. Hint Resolve ELMO_recv_valid_prefix : ELMO_hints.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
m: Message
ob: Observation
H1: constrained_state_prop Ei s
H2: m <*> ob ∉ receivedMessages s
H3: m ∉ receivedMessages s
H4: adr s ≠ adr (state m)
Hrecv: ELMO_recv_valid s (m <*> ob)
Hfull: full_node s (m <*> ob)
Hno_self: no_self_equiv s (m <*> ob)
Hmsg: ELMO_msg_valid_full (m <*> ob)
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (m <*> ob))ELMO_recv_valid s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: Stateconstrained_state_prop Ei s → ∀ m : BaseELMO.Message, m ∈ receivedMessages s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: Stateconstrained_state_prop Ei s → ∀ m : BaseELMO.Message, m ∈ receivedMessages s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
n: adr (state m) ≠ adr s∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'm ∈ sentMessages s → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'm ∈ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'm ∈ sentMessages s → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
state: BaseELMO.State
Hm: MkMessage state ∈ receivedMessages s
e: adr (BaseELMO.state (MkMessage state)) = adr s
i': index
Hi': adr (BaseELMO.state (MkMessage state)) = idx i'MkMessage state ∈ sentMessages s → constrained_state_prop (ELMO_component i') (BaseELMO.state (MkMessage state))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
state: BaseELMO.State
Hm: MkMessage state ∈ receivedMessages s
e: adr (BaseELMO.state (MkMessage state)) = adr s
i': index
Hi': adr (BaseELMO.state (MkMessage state)) = idx i'constrained_state_prop (ELMO_component i') sby (apply ELMO_reachable_view in Hs as []; apply (inj idx); congruence).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
state: BaseELMO.State
Hm: MkMessage state ∈ receivedMessages s
e: adr (BaseELMO.state (MkMessage state)) = adr s
i': index
Hi': adr (BaseELMO.state (MkMessage state)) = idx i'i = i'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'm ∈ sentMessages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'UMO_reachable no_self_equiv sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable ELMO_recv_valid s
H1: adr s = idx i
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'UMO_reachable no_self_equiv sby intros ? ? [].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
H1: adr s = idx i
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
e: adr (state m) = adr s
i': index
Hi': adr (state m) = idx i'∀ (s : BaseELMO.State) (m : BaseELMO.Message), ELMO_recv_valid s m → no_self_equiv s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s
m: BaseELMO.Message
Hm: m ∈ receivedMessages s
n: adr (state m) ≠ adr s∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: constrained_state_prop Ei s∀ m : BaseELMO.Message, m ∈ receivedMessages s → adr (state m) ≠ adr s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i∀ m : BaseELMO.Message, m ∈ receivedMessages s → adr (state m) ≠ adr s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Receive msg) = idx i
IHHs: adr s = idx i → ∀ m : BaseELMO.Message, m ∈ receivedMessages s → adr (state m) ≠ adr s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)∀ m : BaseELMO.Message, m ∈ receivedMessages (s <+> MkObservation Receive msg) → adr (state m) ≠ adr (s <+> MkObservation Receive msg) → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
msg: BaseELMO.Message
Hvalid: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
IHHs: adr s = idx i → ∀ m : BaseELMO.Message, m ∈ receivedMessages s → adr (state m) ≠ adr s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)
m: BaseELMO.Message
Hm: m = msg ∧ True ∨ m ∈ receivedMessages sadr (state m) ≠ adr (s <+> MkObservation Receive msg) → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
m: BaseELMO.Message
Hvalid: ELMO_recv_valid s m
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
IHHs: adr s = idx i → ∀ m : BaseELMO.Message, m ∈ receivedMessages s → adr (state m) ≠ adr s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)adr (state m) ≠ adr (s <+> MkObservation Receive m) → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
m: BaseELMO.Message
Hvalid: ELMO_recv_valid s m
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
IHHs: adr s = idx i → ∀ m : BaseELMO.Message, m ∈ receivedMessages s → adr (state m) ≠ adr s → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)
n: m ∉ receivedMessages sadr (state m) ≠ adr (s <+> MkObservation Receive m) → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: BaseELMO.Message∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s m → m ∉ receivedMessages s → adr (state m) ≠ adr (s <+> MkObservation Receive m) → ∀ i' : index, adr (state m) = idx i' → constrained_state_prop (ELMO_component i') (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms: BaseELMO.State∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage (ms <+> ob)) → MkMessage (ms <+> ob) ∉ receivedMessages s → adr (ms <+> ob) ≠ adr s → ∀ i' : index, adr (ms <+> ob) = idx i' → constrained_state_prop (ELMO_component i') (ms <+> ob)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage m') → MkMessage m' ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'constrained_state_prop (ELMO_component i') m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)constrained_state_prop (ELMO_component i') m'by intro; apply (ELMO_recv_valid_prefix s (MkMessage ms) ob); [apply ELMO_reachable_view | ..].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)constrained_state_prop (ELMO_component i') m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: constrained_state_prop (ELMO_component i') msconstrained_state_prop (ELMO_component i') m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
e: MkMessage ms ∈ receivedMessages sconstrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'MkMessage ms ∈ receivedMessages s → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
s: BaseELMO.State
msg: BaseELMO.Message
H1: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Receive msg) = idx i
Hadr_neq: adr ms ≠ adr (s <+> MkObservation Receive msg)
i': index
Hadr_ms: adr ms = idx i'
IHHs: adr s = idx i → adr ms ≠ adr s → MkMessage ms ∈ receivedMessages s → constrained_state_prop (ELMO_component i') msMkMessage ms ∈ receivedMessages (s <+> MkObservation Receive msg) → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
s: BaseELMO.State
msg: BaseELMO.Message
H1: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Receive msg) = idx i
Hadr_neq: adr ms ≠ adr (s <+> MkObservation Receive msg)
i': index
Hadr_ms: adr ms = idx i'
IHHs: adr s = idx i → adr ms ≠ adr s → MkMessage ms ∈ receivedMessages s → constrained_state_prop (ELMO_component i') ms
e: MkMessage ms ∈ receivedMessages sMkMessage ms ∈ receivedMessages (s <+> MkObservation Receive msg) → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
s: BaseELMO.State
msg: BaseELMO.Message
H1: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Receive msg) = idx i
Hadr_neq: adr ms ≠ adr (s <+> MkObservation Receive msg)
i': index
Hadr_ms: adr ms = idx i'
IHHs: adr s = idx i → adr ms ≠ adr s → MkMessage ms ∈ receivedMessages s → constrained_state_prop (ELMO_component i') ms
n: MkMessage ms ∉ receivedMessages sMkMessage ms ∈ receivedMessages (s <+> MkObservation Receive msg) → constrained_state_prop (ELMO_component i') msby intros; eapply IHHs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
s: BaseELMO.State
msg: BaseELMO.Message
H1: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Receive msg) = idx i
Hadr_neq: adr ms ≠ adr (s <+> MkObservation Receive msg)
i': index
Hadr_ms: adr ms = idx i'
IHHs: adr s = idx i → adr ms ≠ adr s → MkMessage ms ∈ receivedMessages s → constrained_state_prop (ELMO_component i') ms
e: MkMessage ms ∈ receivedMessages sMkMessage ms ∈ receivedMessages (s <+> MkObservation Receive msg) → constrained_state_prop (ELMO_component i') msintros [[Hms _] |]%elem_of_receivedMessages_addObservation; cbn in *; subst; eauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
s: BaseELMO.State
msg: BaseELMO.Message
H1: ELMO_recv_valid s msg
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr (s <+> MkObservation Receive msg) = idx i
Hadr_neq: adr ms ≠ adr (s <+> MkObservation Receive msg)
i': index
Hadr_ms: adr ms = idx i'
IHHs: adr s = idx i → adr ms ≠ adr s → MkMessage ms ∈ receivedMessages s → constrained_state_prop (ELMO_component i') ms
n: MkMessage ms ∉ receivedMessages sMkMessage ms ∈ receivedMessages (s <+> MkObservation Receive msg) → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: constrained_state_prop (ELMO_component i') msconstrained_state_prop (ELMO_component i') m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: constrained_state_prop (ELMO_component i') msUMO_reachable ELMO_recv_valid m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ob: BaseELMO.Observation
ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> ob: BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid msUMO_reachable ELMO_recv_valid m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid msUMO_reachable ELMO_recv_valid m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Send (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid msUMO_reachable ELMO_recv_valid m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid msUMO_reachable ELMO_recv_valid m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid msELMO_recv_valid ms (MkMessage os)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid msELMO_recv_valid ms (MkMessage os)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
m: BaseELMO.Message
mo: Message
Hfull_m_os: full_node (state m) (MkMessage os)
Hself_os: no_self_equiv (state m) (MkMessage os)
Hvalid: ELMO_msg_valid_full m
Heqmo: mo = MkMessage os
H1: obs (state m) = obs ms
H2: adr (state m) = adr msELMO_recv_valid ms (MkMessage os)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
m: BaseELMO.Message
mo: Message
Hfull_m_os: full_node (state m) (MkMessage os)
Hself_os: no_self_equiv (state m) (MkMessage os)
Hvalid: ELMO_msg_valid_full m
Heqmo: mo = MkMessage os
H1: obs (state m) = obs ms
H2: adr (state m) = adr ms
H3: m = MkMessage msELMO_recv_valid ms (MkMessage os)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msELMO_recv_valid ms (MkMessage os)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msELMO_msg_valid_full (MkMessage os)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs mslocal_equivocation_limit_ok (ms <+> MkObservation Receive (MkMessage os))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msELMO_msg_valid_full (MkMessage os)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msconstrained_state_prop Ei sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msMkMessage os ∈ messages sby apply ELMO_reachable_view.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msconstrained_state_prop Ei sby revert Hfull_s_m'; apply elem_of_submseteq, elem_of_list_here.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msMkMessage os ∈ messages sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs mslocal_equivocation_limit_ok (ms <+> MkObservation Receive (MkMessage os))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msUMO_reachable no_self_equiv sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msUMO_reachable no_self_equiv (state (MkMessage m'))by revert Hs; apply UMO_reachable_impl; intros ? ? [].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msUMO_reachable no_self_equiv sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msUMO_reachable no_self_equiv (state (MkMessage m'))by revert Hms; apply UMO_reachable_impl; intros ? ? [].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Receive (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hfull_s_m': full_node s (MkMessage m')
Hself: no_self_equiv s (MkMessage m')
Hmvf_m': ELMO_msg_valid_full (MkMessage m')
Hlimit: local_equivocation_limit_ok (s <+> MkObservation Receive (MkMessage m'))
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
Hvalid: ELMO_msg_valid_full (MkMessage ms)
Hself_os: no_self_equiv ms (MkMessage os)
Hfull_m_os: full_node ms (MkMessage os)
H2: adr ms = adr ms
H1: obs ms = obs msUMO_reachable no_self_equiv msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Send (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hrecv_m': ELMO_recv_valid s (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid msUMO_reachable ELMO_recv_valid m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Send (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hmvf: ELMO_msg_valid_full (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
m: Message
H2: ELMO_msg_valid_full (MkMessage os)
H1: m = MkMessage os
H3: obs (state (MkMessage os)) = obs ms
H4: adr (state (MkMessage os)) = adr msUMO_reachable ELMO_recv_valid m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Send (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hmvf: ELMO_msg_valid_full (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
m: Message
H2: ELMO_msg_valid_full (MkMessage os)
H1: m = MkMessage os
H3: obs (state (MkMessage os)) = obs ms
H4: adr (state (MkMessage os)) = adr msUMO_reachable ELMO_recv_valid (ms <+> MkObservation Send (MkMessage os))by apply reach_send. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
os, ms: BaseELMO.State
IHms: ∀ s : BaseELMO.State, UMO_reachable ELMO_recv_valid s → adr s = idx i → ELMO_recv_valid s (MkMessage ms) → MkMessage ms ∉ receivedMessages s → adr ms ≠ adr s → ∀ i' : index, adr ms = idx i' → constrained_state_prop (ELMO_component i') ms
m':= ms <+> MkObservation Send (MkMessage os): BaseELMO.State
s: BaseELMO.State
Hs: UMO_reachable ELMO_recv_valid s
Hadr: adr s = idx i
Hmvf: ELMO_msg_valid_full (MkMessage m')
Hfresh': MkMessage m' ∉ receivedMessages s
Hadr_neq: adr ms ≠ adr s
i': index
Hadr_ms: adr ms = idx i'
Hrecv_if_fresh: MkMessage ms ∉ receivedMessages s → ELMO_recv_valid s (MkMessage ms)
Hms: UMO_reachable ELMO_recv_valid ms
m: Message
H2: ELMO_msg_valid_full (MkMessage os)
H1: m = MkMessage os
H3: obs (state (MkMessage os)) = obs ms
H4: adr (state (MkMessage os)) = adr msUMO_reachable ELMO_recv_valid (ms <+> MkObservation Send (MkMessage ms))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms, s: State
i': indexadr ms = idx i' → constrained_state_prop Ei s → ELMO_recv_valid s (MkMessage ms) → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms, s: State
i': indexadr ms = idx i' → constrained_state_prop Ei s → ELMO_recv_valid s (MkMessage ms) → constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms, s: State
i': index
Heq: adr ms = idx i'
Hcsp: constrained_state_prop Ei s
Hrv: ELMO_recv_valid s (MkMessage ms)constrained_state_prop (ELMO_component i') msAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms, s: State
i': index
Heq: adr ms = idx i'
Hcsp: constrained_state_prop Ei s
Hrv: ELMO_recv_valid s (MkMessage ms)constrained_state_prop (ELMO_component i') (state (MkMessage ms))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms, s: State
i': index
Heq: adr ms = idx i'
Hcsp: constrained_state_prop Ei s
Hrv: ELMO_recv_valid s (MkMessage ms)constrained_state_prop Ei (s <+> MkObservation Receive (MkMessage ms))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms, s: State
i': index
Heq: adr ms = idx i'
H1: UMO_reachable ELMO_recv_valid s
H2: adr s = idx i
Hrv: ELMO_recv_valid s (MkMessage ms)constrained_state_prop Ei (s <+> MkObservation Receive (MkMessage ms))by split; [apply reach_recv |]. Qed. Inductive ELMO_component_RAM_transition : Label -> State -> State -> Message -> Prop := | ecr_valid_receive : forall (s1 s2 : State) (m : Message), input_constrained_transition Ei Receive (s1, Some m) (s2, None) -> ELMO_component_RAM_transition Receive s1 s2 m | ecr_valid_send : forall (s1 s2 : State) (m : Message), input_constrained_transition Ei Send (s1, None) (s2, Some m) -> ELMO_component_RAM_transition Send s1 s2 m.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
ms, s: State
i': index
Heq: adr ms = idx i'
H1: UMO_reachable ELMO_recv_valid s
H2: adr s = idx i
Hrv: ELMO_recv_valid s (MkMessage ms)UMO_reachable ELMO_recv_valid (s <+> MkObservation Receive (MkMessage ms)) ∧ adr s = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: Label
s: State
om: option Message
s': State
om': option Messageinput_constrained_transition Ei l (s, om) (s', om') ↔ l = Receive ∧ (∃ m : Message, om = Some m ∧ om' = None ∧ ELMO_component_RAM_transition l s s' m) ∨ l = Send ∧ (∃ m : Message, om' = Some m ∧ om = None ∧ ELMO_component_RAM_transition Send s s' m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: Label
s: State
om: option Message
s': State
om': option Messageinput_constrained_transition Ei l (s, om) (s', om') ↔ l = Receive ∧ (∃ m : Message, om = Some m ∧ om' = None ∧ ELMO_component_RAM_transition l s s' m) ∨ l = Send ∧ (∃ m : Message, om' = Some m ∧ om = None ∧ ELMO_component_RAM_transition Send s s' m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: Label
s: State
om: option Message
s': State
om': option Messagel = Receive ∧ (∃ m : Message, om = Some m ∧ om' = None ∧ ELMO_component_RAM_transition l s s' m) ∨ l = Send ∧ (∃ m : Message, om' = Some m ∧ om = None ∧ ELMO_component_RAM_transition Send s s' m) → input_constrained_transition Ei l (s, om) (s', om')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: Label
s: State
om: option Message
s': State
om': option Messageinput_constrained_transition Ei l (s, om) (s', om') → l = Receive ∧ (∃ m : Message, om = Some m ∧ om' = None ∧ ELMO_component_RAM_transition l s s' m) ∨ l = Send ∧ (∃ m : Message, om' = Some m ∧ om = None ∧ ELMO_component_RAM_transition Send s s' m)by intros [(-> & ? & -> & -> & Hm) | (-> & ? & -> & -> & Hm)]; inversion Hm.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: Label
s: State
om: option Message
s': State
om': option Messagel = Receive ∧ (∃ m : Message, om = Some m ∧ om' = None ∧ ELMO_component_RAM_transition l s s' m) ∨ l = Send ∧ (∃ m : Message, om' = Some m ∧ om = None ∧ ELMO_component_RAM_transition Send s s' m) → input_constrained_transition Ei l (s, om) (s', om')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
l: Label
s: State
om: option Message
s': State
om': option Messageinput_constrained_transition Ei l (s, om) (s', om') → l = Receive ∧ (∃ m : Message, om = Some m ∧ om' = None ∧ ELMO_component_RAM_transition l s s' m) ∨ l = Send ∧ (∃ m : Message, om' = Some m ∧ om = None ∧ ELMO_component_RAM_transition Send s s' m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Ht: input_constrained_transition Ei Receive (s, Some m) (s <+> MkObservation Receive m, None)
Hvi: valid Receive (s, Some m)
Hti: transition Receive (s, Some m) = (s <+> MkObservation Receive m, None)
H1: ELMO_recv_valid s mReceive = Receive ∧ (∃ m0 : Message, Some m = Some m0 ∧ None = None ∧ ELMO_component_RAM_transition Receive s (s <+> MkObservation Receive m) m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Ht: input_constrained_transition Ei Send ( s, None) (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hvi: valid Send (s, None)
Hti: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))Send = Send ∧ (∃ m : Message, Some (MkMessage s) = Some m ∧ None = None ∧ ELMO_component_RAM_transition Send s (s <+> MkObservation Send (MkMessage s)) m)by split; [done |]; eexists; split_and!; [done.. |]; constructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Ht: input_constrained_transition Ei Receive (s, Some m) (s <+> MkObservation Receive m, None)
Hvi: valid Receive (s, Some m)
Hti: transition Receive (s, Some m) = (s <+> MkObservation Receive m, None)
H1: ELMO_recv_valid s mReceive = Receive ∧ (∃ m0 : Message, Some m = Some m0 ∧ None = None ∧ ELMO_component_RAM_transition Receive s (s <+> MkObservation Receive m) m0)by split; [done |]; eexists; split_and!; [done.. |]; constructor. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
Ht: input_constrained_transition Ei Send ( s, None) (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hvi: valid Send (s, None)
Hti: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))Send = Send ∧ (∃ m : Message, Some (MkMessage s) = Some m ∧ None = None ∧ ELMO_component_RAM_transition Send s (s <+> MkObservation Send (MkMessage s)) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from Ei s tr∀ item : transition_item, item ∈ tr → ∃ (s : State) (m : Message), destination item = s <+> MkObservation (l item) m ∧ input_constrained_transition_item Ei s itemAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from Ei s tr∀ item : transition_item, item ∈ tr → ∃ (s : State) (m : Message), destination item = s <+> MkObservation (l item) m ∧ input_constrained_transition_item Ei s itemAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s', iom) (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∃ (s : State) (m : Message), destination item = s <+> MkObservation (VLSM.l item) m ∧ input_constrained_transition_item Ei s item∀ item : transition_item, item ∈ {| l := l; input := iom; destination := s; output := oom |} :: tl → ∃ (s : State) (m : Message), destination item = s <+> MkObservation (VLSM.l item) m ∧ input_constrained_transition_item Ei s itemby pose (Hti := Ht); destruct Hti as [(_ & _ & Hvi) Hti]; inversion Hvi; subst; inversion Hti; subst; eexists _, _; split. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s', iom) (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∃ (s : State) (m : Message), destination item = s <+> MkObservation (VLSM.l item) m ∧ input_constrained_transition_item Ei s item∃ (s0 : State) (m : Message), destination {| l := l; input := iom; destination := s; output := oom |} = s0 <+> MkObservation (VLSM.l {| l := l; input := iom; destination := s; output := oom |}) m ∧ input_constrained_transition_item Ei s0 {| l := l; input := iom; destination := s; output := oom |}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector input m item → m ∈ receivedMessages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector input m item → m ∈ receivedMessages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector input m item → m ∈ receivedMessages s∀ item : transition_item, item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] → ∀ m : Message, field_selector input m item → m ∈ receivedMessages sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector input m item → m ∈ receivedMessages s
item: transition_item
Hitem: item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]
m: Message
Hm: field_selector input m itemm ∈ receivedMessages sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector input m item → m ∈ receivedMessages s
item: transition_item
Hitem: item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]
m: Message
Hm: field_selector input m itemhas_been_received Ei sf mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector input m item → m ∈ receivedMessages s
item: transition_item
Hitem: item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]
m: Message
Hm: field_selector input m itemiom = Some m ∨ has_been_received Ei s mby destruct Hitem as [Hitem | ->]; [right; cbn; eapply IHHtr | left]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector input m item → m ∈ receivedMessages s
item: transition_item
Hitem: item ∈ tr ∨ item = {| l := l; input := iom; destination := sf; output := oom |}
m: Message
Hm: field_selector input m itemiom = Some m ∨ has_been_received Ei s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector output m item → m ∈ sentMessages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector output m item → m ∈ sentMessages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector output m item → m ∈ sentMessages s∀ item : transition_item, item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] → ∀ m : Message, field_selector output m item → m ∈ sentMessages sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector output m item → m ∈ sentMessages s
item: transition_item
Hitem: item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]
m: Message
Hm: field_selector output m itemm ∈ sentMessages sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector output m item → m ∈ sentMessages s
item: transition_item
Hitem: item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]
m: Message
Hm: field_selector output m itemhas_been_sent Ei sf mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector output m item → m ∈ sentMessages s
item: transition_item
Hitem: item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]
m: Message
Hm: field_selector output m itemoom = Some m ∨ has_been_sent Ei s mby destruct Hitem as [Hitem | ->]; [right; cbn; eapply IHHtr | left]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
si, s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) si s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, iom) (sf, oom)
IHHtr: ∀ item : transition_item, item ∈ tr → ∀ m : Message, field_selector output m item → m ∈ sentMessages s
item: transition_item
Hitem: item ∈ tr ∨ item = {| l := l; input := iom; destination := sf; output := oom |}
m: Message
Hm: field_selector output m itemoom = Some m ∨ has_been_sent Ei s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from Ei s tr∀ item : transition_item, item ∈ tr → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from Ei s tr∀ item : transition_item, item ∈ tr → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s', iom) (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)∀ item : transition_item, item ∈ {| l := l; input := iom; destination := s; output := oom |} :: tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s' ≤ sizeState (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s', iom) (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)
item: transition_item
Hitem: item ∈ {| l := l; input := iom; destination := s; output := oom |} :: tl
m: BaseELMO.Message
Hm: field_selector output m itemsizeState s' ≤ sizeState (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Hv: valid l (s', iom)
Ht: transition l (s', iom) = (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)
item: transition_item
Hitem: item ∈ {| l := l; input := iom; destination := s; output := oom |} :: tl
m: BaseELMO.Message
Hm: field_selector output m itemsizeState s' ≤ sizeState (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Hv: valid l (s', iom)
Ht: transition l (s', iom) = (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)
m: BaseELMO.Message
Hm: oom = Some msizeState s' ≤ sizeState (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Hv: valid l (s', iom)
Ht: transition l (s', iom) = (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)
item: transition_item
Hitem: item ∈ tl
m: BaseELMO.Message
Hm: output item = Some msizeState s' ≤ sizeState (state m)by inversion Hv; subst; inversion Ht.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Hv: valid l (s', iom)
Ht: transition l (s', iom) = (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)
m: BaseELMO.Message
Hm: oom = Some msizeState s' ≤ sizeState (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Hv: valid l (s', iom)
Ht: transition l (s', iom) = (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)
item: transition_item
Hitem: item ∈ tl
m: BaseELMO.Message
Hm: output item = Some msizeState s' ≤ sizeState (state m)by eapply Nat.lt_le_incl, ELMO_component_valid_transition_size; cbn in Hv, Ht. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tl: list transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) s tl
s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
Hv: valid l (s', iom)
Ht: transition l (s', iom) = (s, oom)
IHHtr: ∀ item : transition_item, item ∈ tl → ∀ m : BaseELMO.Message, field_selector output m item → sizeState s ≤ sizeState (state m)
item: transition_item
Hitem: item ∈ tl
m: BaseELMO.Message
Hm: output item = Some msizeState s' ≤ sizeState sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr∀ item : transition_item, item ∈ tr → ∀ m : Message, item_sends_or_receives m item → m ∈ messages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr∀ item : transition_item, item ∈ tr → ∀ m : Message, item_sends_or_receives m item → m ∈ messages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr
item: transition_item
H1: item ∈ tr
m: Message
H2: input item = Some mm ∈ sentMessages s' ∨ m ∈ receivedMessages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr
item: transition_item
H1: item ∈ tr
m: Message
H2: output item = Some mm ∈ sentMessages s' ∨ m ∈ receivedMessages s'by right; eapply ELMO_component_receivedMessages_of_constrained_trace.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr
item: transition_item
H1: item ∈ tr
m: Message
H2: input item = Some mm ∈ sentMessages s' ∨ m ∈ receivedMessages s'by left; eapply ELMO_component_sentMessages_of_constrained_trace. Qed. End sec_ELMO_component_lemmas. Section sec_TraceableVLSM_ELMO_component. Context (i : index) (Ei : VLSM Message := ELMO_component i) . Definition ELMO_component_state_destructor (s : State) : list (transition_item ELMO_component_type * State) := let adr := adr s in match obs s with | [] => [] | MkObservation Send msg as ob :: obs => let source := MkState obs adr in [(Build_transition_item ELMO_component_type Send None s (Some msg), source)] | MkObservation Receive msg as ob :: obs => let source := MkState obs adr in [(Build_transition_item ELMO_component_type Receive (Some msg) s None, source)] end.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s, s': VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
Htr: finite_constrained_trace_from_to Ei s s' tr
item: transition_item
H1: item ∈ tr
m: Message
H2: output item = Some mm ∈ sentMessages s' ∨ m ∈ receivedMessages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : VLSM.state Ei, constrained_state_prop Ei s' → initial_state_prop s' ↔ ELMO_component_state_destructor s' = []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : VLSM.state Ei, constrained_state_prop Ei s' → initial_state_prop s' ↔ ELMO_component_state_destructor s' = []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state Ei
Hs': constrained_state_prop Ei s'
Hs'': initial_state_prop s'ELMO_component_state_destructor s' = []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state Ei
Hs': constrained_state_prop Ei s'
Hs'': ELMO_component_state_destructor s' = []initial_state_prop s'by cbn in Hs''; apply UMO_component_initial_state_spec in Hs'' as ->.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state Ei
Hs': constrained_state_prop Ei s'
Hs'': initial_state_prop s'ELMO_component_state_destructor s' = []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state Ei
Hs': constrained_state_prop Ei s'
Hs'': ELMO_component_state_destructor s' = []initial_state_prop s'by destruct s' as [[| [[]]] adr]; cbn in *; [| done..]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state Ei
Hs': adr s' = idx i
Hs'': ELMO_component_state_destructor s' = []initial_state_prop s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : VLSM.state Ei, constrained_state_prop Ei s' → ∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → input_constrained_transition_item Ei s itemAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : VLSM.state Ei, constrained_state_prop Ei s' → ∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → input_constrained_transition_item Ei s itemAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
His: initial_state_prop is∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor (`(is ↾ His)) → input_constrained_transition_item Ei s itemAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state Ei
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
Hpt: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, om) (s', om')∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → input_constrained_transition_item Ei s itemby cbn in *; apply UMO_component_initial_state_spec in His as ->; inversion 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
His: initial_state_prop is∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor (`(is ↾ His)) → input_constrained_transition_item Ei s itemby pose (Hpt' := Hpt); destruct l, s, om, Hpt' as [(_ & _ & Hv) Ht]; inversion Hv; subst; inversion Ht; subst; intros _s item Hitem; apply elem_of_list_singleton in Hitem; inversion Hitem. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s': VLSM.state Ei
l: VLSM.label (preloaded_with_all_messages_vlsm Ei)
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
om, om': option Message
Hpt: input_valid_transition (preloaded_with_all_messages_vlsm Ei) l (s, om) (s', om')∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → input_constrained_transition_item Ei s itemAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageTraceableVLSM Ei ELMO_component_state_destructor sizeStateAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageTraceableVLSM Ei ELMO_component_state_destructor sizeStateAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageTransitionMonotoneVLSM Ei sizeStateAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s' s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → destination item = s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : VLSM.state Ei, constrained_state_prop Ei s' → ∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → input_constrained_transition_item Ei s itemAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : VLSM.state Ei, constrained_state_prop Ei s → initial_state_prop s ↔ ELMO_component_state_destructor s = []by typeclasses eauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageTransitionMonotoneVLSM Ei sizeStateby intros [[| [[] ?] ?] ?] *; [inversion 1 | ..]; intro Hitem; apply elem_of_list_singleton in Hitem; inversion_clear Hitem.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (s' s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → destination item = s'by apply ELMO_component_state_destructor_input_constrained_transition_item.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : VLSM.state Ei, constrained_state_prop Ei s' → ∀ (s : VLSM.state Ei) (item : transition_item), (item, s) ∈ ELMO_component_state_destructor s' → input_constrained_transition_item Ei s itemby apply ELMO_component_state_destructor_initial. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s : VLSM.state Ei, constrained_state_prop Ei s → initial_state_prop s ↔ ELMO_component_state_destructor s = []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : State, constrained_state_prop Ei s' → ∀ (s : State) (m : Message), s' = s <+> MkObservation Send m → s = state mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ s' : State, constrained_state_prop Ei s' → ∀ (s : State) (m : Message), s' = s <+> MkObservation Send m → s = state mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hs': constrained_state_prop Ei (s <+> MkObservation Send m)s = state mby inversion Hv; subst; inversion Ht; subst; destruct s. Qed. End sec_TraceableVLSM_ELMO_component. Section sec_MessageDependencies_ELMO_component. Context (i : index) (Ei : VLSM Message := ELMO_component i) .Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: State
m: Message
Hs': constrained_state_prop Ei (s <+> MkObservation Send m)
Hv: ELMO_component_valid Send (MkState (obs s) (adr s)) None
Ht: (MkState (obs s) (adr s) <+> MkObservation Send (MkMessage (MkState (obs s) (adr s))), Some (MkMessage (MkState (obs s) (adr s)))) = (s <+> MkObservation Send m, Some m)s = state mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Messagecannot_resend_message_stepwise_prop EiAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Messagecannot_resend_message_stepwise_prop EiAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm Ei) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hobs: MkMessage s ∈ sentMessages sFalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm Ei) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hobs: MkMessage s ∈ receivedMessages (s <+> MkObservation Send (MkMessage s))Falseby apply elem_of_sentMessages, obs_sizeState in Hobs; cbn in Hobs; lia.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm Ei) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hobs: MkMessage s ∈ sentMessages sFalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm Ei) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hobs: MkMessage s ∈ receivedMessages (s <+> MkObservation Send (MkMessage s))Falseby apply elem_of_receivedMessages, obs_sizeState in Hobs; cbn in Hobs; lia. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: VLSM.state (preloaded_with_all_messages_vlsm Ei)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm Ei) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hobs: MkMessage s ∈ receivedMessages sFalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageMessageDependencies Ei Message_dependenciesAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM MessageMessageDependencies Ei Message_dependenciesAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (m : Message) (s' : VLSM.state (preloaded_with_all_messages_vlsm Ei)), can_produce (preloaded_with_all_messages_vlsm Ei) s' m → message_dependencies_full_node_condition Ei Message_dependencies s' mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ m : Message, can_emit (preloaded_with_all_messages_vlsm Ei) m → can_emit (preloaded_vlsm Ei (λ msg : Message, msg ∈ Message_dependencies m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ (m : Message) (s' : VLSM.state (preloaded_with_all_messages_vlsm Ei)), can_produce (preloaded_with_all_messages_vlsm Ei) s' m → message_dependencies_full_node_condition Ei Message_dependencies s' mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
s', s: BaseELMO.State
iom: option Message
l: Label
Hv: ELMO_component_valid l s iom
Ht: UMO_component_transition l s iom = (s', Some m)
dm: Message
Hdm: dm ∈ Message_dependencies mhas_been_directly_observed_from_sent_received Ei s' dmAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
s', s: BaseELMO.State
iom: option Message
l: Label
Hv: ELMO_component_valid l s iom
Ht: UMO_component_transition l s iom = (s', Some m)
o: BaseELMO.Observation
Hy: o ∈ obs (state m)has_been_directly_observed_from_sent_received Ei s' (message o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hv: ELMO_component_valid Send s None
o: BaseELMO.Observation
Hy: o ∈ obs shas_been_directly_observed_from_sent_received Ei (s <+> MkObservation Send (MkMessage s)) (message o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hv: ELMO_component_valid Send s None
o: BaseELMO.Observation
Hy: o ∈ obs smessage o ∈ sentMessages (s <+> MkObservation Send (MkMessage s)) ∨ message o ∈ receivedMessages (s <+> MkObservation Send (MkMessage s))by destruct o as [[] ?]; cbn; firstorder.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
s: BaseELMO.State
Hv: ELMO_component_valid Send s None
o: BaseELMO.Observation
Hy: o ∈ obs s(message o = MkMessage s ∧ True ∨ MkObservation Send (message o) ∈ obs s) ∨ message o = MkMessage s ∧ False ∨ MkObservation Receive (message o) ∈ obs sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message∀ m : Message, can_emit (preloaded_with_all_messages_vlsm Ei) m → can_emit (preloaded_vlsm Ei (λ msg : Message, msg ∈ Message_dependencies m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
Hm: can_emit (preloaded_with_all_messages_vlsm Ei) mcan_emit (preloaded_vlsm Ei (λ msg : Message, msg ∈ Message_dependencies m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some mcan_emit (preloaded_vlsm Ei (λ msg : Message, msg ∈ Message_dependencies m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some mtrace_has_message (field_selector output) m (tr ++ [item])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some mfinite_valid_trace (preloaded_vlsm Ei (λ msg : Message, msg ∈ Message_dependencies m)) is (tr ++ [item])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some mtrace_has_message (field_selector output) m (tr ++ [item])by split; [apply elem_of_app; right; left |].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some m?x ∈ tr ++ [item] ∧ field_selector output m ?xAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some mfinite_valid_trace (preloaded_vlsm Ei (λ msg : Message, msg ∈ Message_dependencies m)) is (tr ++ [item])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some mtrace_received_not_sent_before_or_after_invariant (tr ++ [item]) (λ msg : Message, msg ∈ Message_dependencies m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])dm ∈ Message_dependencies mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])∃ y : BaseELMO.Observation, dm = message y ∧ y ∈ obs (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])MkObservation Receive dm ∈ obs (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])dm ∈ receivedMessages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) is (tr ++ [item])
His: initial_state_prop is
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])dm ∈ receivedMessages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) is tr
Hitem: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) (finite_trace_last is tr) [item]
His: initial_state_prop is
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])dm ∈ receivedMessages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
Hitem: finite_valid_trace_from (preloaded_with_all_messages_vlsm Ei) (finite_trace_last is tr) [item]
His: initial_state_prop is
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])dm ∈ receivedMessages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
m: Message
is: VLSM.state (preloaded_with_all_messages_vlsm Ei)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
Hv: valid (l item) (finite_trace_last is tr, input item)
Ht: transition (l item) (finite_trace_last is tr, input item) = (destination item, output item)
His: initial_state_prop is
Houtput: output item = Some m
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [item])
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [item])dm ∈ receivedMessages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
Hv: ELMO_component_valid Send (finite_trace_last is tr) None
Ht: (finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)), Some (MkMessage (finite_trace_last is tr))) = (finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)), Some (MkMessage (finite_trace_last is tr)))
His: UMO_component_initial_state_prop (idx i) is
dm: Message
Hnsnd: ¬ trace_has_message (field_selector output) dm (tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}])
Hrcv: trace_has_message (field_selector input) dm (tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}])dm ∈ receivedMessages (state (MkMessage (finite_trace_last is tr)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}])dm ∈ receivedMessages (finite_trace_last is tr)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}])trace_has_message (field_selector input) dm trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}])
Hrcv': trace_has_message (field_selector input) dm trdm ∈ receivedMessages (finite_trace_last is tr)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}])trace_has_message (field_selector input) dm trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
dm_item: transition_item
Hdm_item: dm_item ∈ tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}]
Hdm: field_selector input dm dm_itemtrace_has_message (field_selector input) dm trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
dm_item: transition_item
Hdm_item: dm_item ∈ tr ∨ dm_item = {| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}
Hdm: field_selector input dm dm_itemtrace_has_message (field_selector input) dm trby apply Exists_exists; eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
dm_item: transition_item
Hdm_item: dm_item ∈ tr
Hdm: input dm_item = Some dmtrace_has_message (field_selector input) dm trby eapply @has_been_received_examine_one_trace with (vlsm := Ei) in Hrcv'; cycle 1. Qed. End sec_MessageDependencies_ELMO_component. Section sec_ELMOProtocol. Context `{Inhabited index} .Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
i: index
Ei:= ELMO_component i: VLSM Message
is: BaseELMO.State
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm Ei) is (finite_trace_last is tr) tr
His: UMO_component_initial_state_prop (idx i) is
dm: Message
Hrcv: trace_has_message (field_selector input) dm (tr ++ [{| l := Send; input := None; destination := finite_trace_last is tr <+> MkObservation Send (MkMessage (finite_trace_last is tr)); output := Some (MkMessage (finite_trace_last is tr)) |}])
Hrcv': trace_has_message (field_selector input) dm trdm ∈ receivedMessages (finite_trace_last is tr)
Protocol
Definition ELMO_global_equivocators (s : composite_state ELMO_component) (a : Address) : Prop := exists m : Message, adr (state m) = a /\ (exists (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) /\ ~ composite_has_been_sent ELMO_component s m.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
s: StateDecision (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
s: StateDecision (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
rec: ∀ s : State, Decision (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
ol: list BaseELMO.Observation
a: AddressDecision (∃ o : BaseELMO.Observation, rec_obs (MkState ol a) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
a: AddressDecision (∃ o : BaseELMO.Observation, rec_obs (MkState [] a) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
ob: BaseELMO.Observation
ol: list BaseELMO.Observation
a: Address
IHol: Decision (∃ o : BaseELMO.Observation, rec_obs (MkState ol a) o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs (state (message ob)) o ∧ P o)Decision (∃ o : BaseELMO.Observation, rec_obs (MkState (ob :: ol) a) o ∧ P o)by right; intros (? & Hrec & ?); inversion Hrec.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
a: AddressDecision (∃ o : BaseELMO.Observation, rec_obs (MkState [] a) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
ob: BaseELMO.Observation
ol: list BaseELMO.Observation
a: Address
IHol: Decision (∃ o : BaseELMO.Observation, rec_obs (MkState ol a) o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs (state (message ob)) o ∧ P o)Decision (∃ o : BaseELMO.Observation, rec_obs (MkState (ob :: ol) a) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
ob: BaseELMO.Observation
s: BaseELMO.State
IHol: Decision (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs (state (message ob)) o ∧ P o)Decision (∃ o : BaseELMO.Observation, rec_obs (s <+> ob) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
ob: BaseELMO.Observation
s: BaseELMO.State
IHol: Decision (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs (state (message ob)) o ∧ P o)
Hnot_new: ¬ P obDecision (∃ o : BaseELMO.Observation, rec_obs (s <+> ob) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
ob: BaseELMO.Observation
s: BaseELMO.State
Hnot_prev: ¬ (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs (state (message ob)) o ∧ P o)
Hnot_new: ¬ P obDecision (∃ o : BaseELMO.Observation, rec_obs (s <+> ob) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
os, s: BaseELMO.State
Hnot_prev: ¬ (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs os o ∧ P o)
Hnot_new: ¬ P (MkObservation Receive (MkMessage os))Decision (∃ o : BaseELMO.Observation, rec_obs (s <+> MkObservation Receive (MkMessage os)) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
os, s: BaseELMO.State
Hnot_prev: ¬ (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs os o ∧ P o)
Hnot_new: ¬ P (MkObservation Send (MkMessage os))Decision (∃ o : BaseELMO.Observation, rec_obs (s <+> MkObservation Send (MkMessage os)) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
os, s: BaseELMO.State
Hnot_prev: ¬ (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs os o ∧ P o)
Hnot_new: ¬ P (MkObservation Receive (MkMessage os))Decision (∃ o : BaseELMO.Observation, rec_obs (s <+> MkObservation Receive (MkMessage os)) o ∧ P o)by right; intros (? & Hrec & ?); inversion Hrec; subst; replace s0 with s in * by (apply eq_State; done); eauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
os, s: BaseELMO.State
Hnot_prev: ¬ (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
Hnot_recv: ¬ (∃ o : BaseELMO.Observation, rec_obs os o ∧ P o)
Hnot_new: ¬ P (MkObservation Receive (MkMessage os))Decision (∃ o : BaseELMO.Observation, rec_obs (s <+> MkObservation Receive (MkMessage os)) o ∧ P o)by right; intros (? & Hrec & ?); inversion Hrec; subst; replace s0 with s in * by (apply eq_State; done); eauto. Defined.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
P: Observation → Prop
P_dec: ∀ o : Observation, Decision (P o)
os, s: BaseELMO.State
Hnot_prev: ¬ (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)
IHob: Decision (∃ o : BaseELMO.Observation, rec_obs os o ∧ P o)
Hnot_new: ¬ P (MkObservation Send (MkMessage os))Decision (∃ o : BaseELMO.Observation, rec_obs (s <+> MkObservation Send (MkMessage os)) o ∧ P o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexRelDecision ELMO_global_equivocatorsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexRelDecision ELMO_global_equivocatorsAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: AddressDecision (ELMO_global_equivocators s a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address(∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o)) ↔ ELMO_global_equivocators s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: AddressDecision (∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address(∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o)) ↔ ELMO_global_equivocators s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address(∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o)) ↔ (∃ m : Message, adr (state m) = a ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
Hequ: ∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o)∃ m : Message, adr (state m) = a ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
Hequ: ∃ m : Message, adr (state m) = a ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s m∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o)by destruct Hequ as (k & [l m] & Hk & [Hadr Hsuff]); eauto 6.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
Hequ: ∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o)∃ m : Message, adr (state m) = a ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s mby destruct Hequ as (m & Hadr & (k & l & Hrec_obs) & Hnot_sent); eauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
Hequ: ∃ m : Message, adr (state m) = a ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s m∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: AddressDecision (∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o))by typeclasses eauto. Defined. Set Warnings "-cannot-define-projection". Record global_equivocators_simple (s : composite_state ELMO_component) (a : Address) : Prop := { ges_m : Message; ges_adr : adr (state ges_m) = a; ges_recv : composite_has_been_received ELMO_component s ges_m; ges_not_sent : ~ composite_has_been_sent ELMO_component s ges_m; }. Set Warnings "cannot-define-projection". Definition ELMO_global_equivocation : BasicEquivocation (composite_state ELMO_component) Address (listset Address) threshold := {| is_equivocating := ELMO_global_equivocators; is_equivocating_dec := ELMO_global_equivocators_dec; state_validators := const (list_to_set (map idx (enum index))); |}. Definition ELMO_not_heavy : composite_state ELMO_component -> Prop := not_heavy (1 := ELMO_global_equivocation). Definition ELMO_equivocating_validators : composite_state ELMO_component -> listset Address := equivocating_validators (1 := ELMO_global_equivocation).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
X: ∀ P : Observation → Prop, (∀ o : Observation, Decision (P o)) → ∀ s : State, Decision (∃ o : BaseELMO.Observation, rec_obs s o ∧ P o)Decision (∃ (k : index) (o : BaseELMO.Observation), rec_obs (s k) o ∧ adr (state (message o)) = a ∧ ¬ composite_has_been_sent ELMO_component s (message o))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : composite_state ELMO_component) (a : Address), a ∈ ELMO_equivocating_validators s → ∃ v : Message_validator idx, `v = aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : composite_state ELMO_component) (a : Address), a ∈ ELMO_equivocating_validators s → ∃ v : Message_validator idx, `v = aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
Ha: a ∈ ELMO_equivocating_validators s∃ v : Message_validator idx, `v = aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
Ha: a ∈ list_to_set (map idx (enum index))∃ v : Message_validator idx, `v = aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
i: index
Hi: a = idx i∃ v : Message_validator idx, `v = aby subst; eexists; apply adr2idx_idx. Qed. Definition ELMO_global_constraint (l : composite_label ELMO_component) (som : composite_state ELMO_component * option Message) : Prop := match l with | existT _ Receive => let (s', _) := composite_transition ELMO_component l som in ELMO_not_heavy s' | existT _ Send => True end. Definition ELMOProtocol : VLSM Message := composite_vlsm ELMO_component ELMO_global_constraint. Definition FreeELMO : VLSM Message := free_composite_vlsm ELMO_component.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
a: Address
i: index
Hi: a = idx i(is_Some ∘ adr2idx idx) a
To talk about reachable composite states for the ELMOProtocol we also name
the preloaded_with_all_messages_vlsm version of the free_composition.
Definition ReachELMO : VLSM Message := preloaded_with_all_messages_vlsm FreeELMO. Definition LimitedELMO : VLSM Message := msg_dep_limited_equivocation_vlsm (Cv := listset (Message_validator idx)) ELMO_component threshold Message_full_dependencies (Message_sender idx).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : composite_state ELMO_component, composite_initial_state_prop ELMO_component s → ELMO_equivocating_validators s ≡ ∅Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : composite_state ELMO_component, composite_initial_state_prop ELMO_component s → ELMO_equivocating_validators s ≡ ∅Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s
v: Addressv ∉ ELMO_equivocating_validators sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s
v: Address
m: Message
k: index
l: Label
Hobs: rec_obs (s k) (MkObservation l m)Falseby inversion Hobs. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s
v: Address
m: Message
k: index
l: Label
Hobs: rec_obs (MkState [] (idx k)) (MkObservation l m)FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : composite_state ELMO_component, composite_initial_state_prop ELMO_component s → ELMO_not_heavy sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : composite_state ELMO_component, composite_initial_state_prop ELMO_component s → ELMO_not_heavy sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component sELMO_not_heavy sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s(equivocation_fault s <= threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s(0 <= threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s0%R = equivocation_fault sby unshelve eapply rt_positive; cycle 2.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s(0 <= threshold)%Rby symmetry; apply sum_weights_empty, ELMO_initial_state_equivocating_validators. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_initial_state_prop ELMO_component s0%R = equivocation_fault sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (sigma : composite_state ELMO_component) (i : index), ELMO_not_heavy sigma → ELMO_not_heavy (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (sigma : composite_state ELMO_component) (i : index), ELMO_not_heavy sigma → ELMO_not_heavy (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R(equivocation_fault (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) <= equivocation_fault sigma)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%Requivocating_validators (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ⊆ equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Addressa ∈ equivocating_validators (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) → a ∈ equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: AddressELMO_global_equivocators (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) a ∧ a ∈ list_to_set (map idx (enum index)) → ELMO_global_equivocators sigma a ∧ a ∈ list_to_set (map idx (enum index))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msg
Hx: a ∈ list_to_set (map idx (enum index))ELMO_global_equivocators sigma a ∧ a ∈ list_to_set (map idx (enum index))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msgELMO_global_equivocators sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msg(∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)) ∧ ¬ composite_has_been_sent ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msg∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msg¬ composite_has_been_sent ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msg∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)by destruct (sigma i); inversion Hmsh; cbn in *; subst; [contradict Hnsent; exists i; cbn; state_update_simpl; left | destruct s].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: rec_obs (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msgrec_obs (sigma i) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) msg¬ composite_has_been_sent ELMO_component sigma msgby destruct (decide (j = i)); subst; state_update_simpl; [right |]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
i: index
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) k) (MkObservation l msg)
j: index
Hsnd: has_been_sent (ELMO_component j) (sigma j) msgmsg ∈ sentMessages (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) j)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (sigma : composite_state ELMO_component) (m : Message) (i i_m : index), UMO_reachable full_node (sigma i_m) → has_been_directly_observed (ELMO_component i_m) (sigma i_m) m → ELMO_not_heavy sigma → ELMO_not_heavy (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (sigma : composite_state ELMO_component) (m : Message) (i i_m : index), UMO_reachable full_node (sigma i_m) → has_been_directly_observed (ELMO_component i_m) (sigma i_m) m → ELMO_not_heavy sigma → ELMO_not_heavy (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) mELMO_not_heavy sigma → ELMO_not_heavy (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R(equivocation_fault (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) <= equivocation_fault sigma)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%Requivocating_validators (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ⊆ equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Addressa ∈ equivocating_validators (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) → a ∈ equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: AddressELMO_global_equivocators (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) a ∧ a ∈ list_to_set (map idx (enum index)) → ELMO_global_equivocators sigma a ∧ a ∈ list_to_set (map idx (enum index))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
Hx: a ∈ list_to_set (map idx (enum index))ELMO_global_equivocators sigma a ∧ a ∈ list_to_set (map idx (enum index))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msgELMO_global_equivocators sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg(∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)) ∧ ¬ composite_has_been_sent ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg¬ composite_has_been_sent ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg¬ composite_has_been_sent ELMO_component sigma msgby destruct (decide (j = i)); subst; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
j: index
Hsnd: has_been_sent (ELMO_component j) (sigma j) msgmsg ∈ sentMessages (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) j)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
a: Address
msg: Message
H3: adr (state msg) = a
k: index
l: Label
Hmsh: rec_obs (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) k) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: rec_obs (sigma i <+> MkObservation Receive m) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: MkObservation l msg = MkObservation Receive m ∨ label (MkObservation Receive m) = Receive ∧ rec_obs (state (message (MkObservation Receive m))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: MkObservation l msg = MkObservation Receive m ∨ label (MkObservation Receive m) = Receive ∧ rec_obs (state (message (MkObservation Receive m))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
H3: m ∈ messages (sigma i_m)∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: MkObservation l msg = MkObservation Receive m ∨ label (MkObservation Receive m) = Receive ∧ rec_obs (state (message (MkObservation Receive m))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
H3: m ∈ messages (sigma i_m)∃ l : Label, rec_obs (sigma i_m) (MkObservation l msg)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: MkObservation l msg = MkObservation Receive m ∨ label (MkObservation Receive m) = Receive ∧ rec_obs (state (message (MkObservation Receive m))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
H3: m ∈ messages (sigma i_m)msg ∈ messages (sigma i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: rec_obs (state (message (MkObservation Receive m))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
H3: m ∈ messages (sigma i_m)msg ∈ messages (sigma i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: rec_obs (state (message (MkObservation Receive m))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
H3: m ∈ messages (sigma i_m)msg <hb mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: rec_obs (state (message (MkObservation Receive m))) (MkObservation l msg)
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
H3: m ∈ messages (sigma i_m)msg ∈ Message_full_dependencies mby apply elem_of_map; eexists; split; cycle 1. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
m: Message
i, i_m: index
Hfull: UMO_reachable full_node (sigma i_m)
Hobs: has_been_directly_observed (ELMO_component i_m) (sigma i_m) m
H2: (equivocation_fault sigma <= threshold)%R
msg: Message
l: Label
Hmsh: MkObservation l msg ∈ rec_obs_fn (state (message (MkObservation Receive m)))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) msg
H3: m ∈ messages (sigma i_m)msg ∈ Message_full_dependencies mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : composite_state ELMO_component, valid_state_prop ELMOProtocol s → ELMO_not_heavy sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : composite_state ELMO_component, valid_state_prop ELMOProtocol s → ELMO_not_heavy sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s': VLSM.state ELMOProtocol
l: VLSM.label ELMOProtocol
om, om': option Message
s: VLSM.state ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, om) (s', om')
IHvalid_state_prop: ELMO_not_heavy sELMO_not_heavy s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s': VLSM.state ELMOProtocol
l: VLSM.label ELMOProtocol
om, om': option Message
s: VLSM.state ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, om) (s', om')
IHvalid_state_prop: ELMO_not_heavy s
Hs': valid_state_prop ELMOProtocol s'ELMO_not_heavy s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s': VLSM.state ELMOProtocol
l: VLSM.label ELMOProtocol
om, om': option Message
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
Hv: valid l (s, om)
Hc: ELMO_global_constraint l (s, om)
Ht: transition l (s, om) = (s', om')
IHvalid_state_prop: ELMO_not_heavy s
Hs': valid_state_prop ELMOProtocol s'ELMO_not_heavy s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s': VLSM.state ELMOProtocol
i: index
om, om': option Message
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
Hv: valid (existT i Send) (s, om)
Hc: True
Ht: transition (existT i Send) (s, om) = (s', om')
IHvalid_state_prop: ELMO_not_heavy s
Hs': valid_state_prop ELMOProtocol s'ELMO_not_heavy s'by apply ELMO_not_heavy_send_message. Qed. Definition ELMO_state_to_minimal_equivocation_trace (s : composite_state ELMO_component) (Hs : composite_constrained_state_prop ELMO_component s) : composite_state ELMO_component * list (composite_transition_item ELMO_component) := state_to_minimal_equivocation_trace ELMO_component (fun _ : index => ELMO_component_state_destructor) (fun _ : index => sizeState) s Hs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
Hv: valid (existT i Send) (s, None)
Hc: True
Ht: transition (existT i Send) (s, None) = (state_update ELMO_component s i (s i <+> MkObservation Send (MkMessage (s i))), Some (MkMessage (s i)))
IHvalid_state_prop: ELMO_not_heavy s
Hs': valid_state_prop ELMOProtocol (state_update ELMO_component s i (s i <+> MkObservation Send (MkMessage (s i))))ELMO_not_heavy (state_update ELMO_component s i (s i <+> MkObservation Send (MkMessage (s i))))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)ELMO_state_to_minimal_equivocation_trace s Hs = (is, tr) → finite_valid_trace_init_to ReachELMO is s trby apply reachable_composite_state_to_trace, minimal_equivocation_choice_is_choosing_well. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)ELMO_state_to_minimal_equivocation_trace s Hs = (is, tr) → finite_valid_trace_init_to ReachELMO is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (i : index) (si : VLSM.state (ELMO_component i)) (m : Message), has_been_directly_observed (ELMO_component i) si m → sizeState (state m) < sizeState siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (i : index) (si : VLSM.state (ELMO_component i)) (m : Message), has_been_directly_observed (ELMO_component i) si m → sizeState (state m) < sizeState siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: BaseELMO.State
m: Message
Hsent: m ∈ sentMessages sisizeState (state m) < sizeState siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: BaseELMO.State
m: Message
Hreceived: m ∈ receivedMessages sisizeState (state m) < sizeState siby apply elem_of_sentMessages, obs_sizeState in Hsent.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: BaseELMO.State
m: Message
Hsent: m ∈ sentMessages sisizeState (state m) < sizeState siby apply elem_of_receivedMessages, obs_sizeState in Hreceived. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: BaseELMO.State
m: Message
Hreceived: m ∈ receivedMessages sisizeState (state m) < sizeState siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexProper (composite_observed_before_send ELMO_component Message_dependencies ==> lt) (sizeState ∘ state)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexProper (composite_observed_before_send ELMO_component Message_dependencies ==> lt) (sizeState ∘ state)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
x, y: Message
Hxy: composite_observed_before_send ELMO_component Message_dependencies x ysizeState (state x) < sizeState (state y)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
x, y: Message
i: index
si: VLSM.state (ELMO_component i)
itemi: transition_item
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) si
Hv: valid (l itemi) (si, input itemi)
Ht: transition (l itemi) (si, input itemi) = (destination itemi, output itemi)
Hy: output itemi = Some y
Hobsxitem: ObservedBeforeStateOrMessage (ELMO_component i) Message_dependencies x si (input itemi)sizeState (state x) < sizeState (state y)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
x: Message
i: index
si: BaseELMO.State
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) si
Hobsxitem: ObservedBeforeStateOrMessage (ELMO_component i) Message_dependencies x si NonesizeState (state x) < sizeState (state (MkMessage si))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
x: Message
i: index
si: BaseELMO.State
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) si
Hobsx: HasBeenObserved (ELMO_component i) Message_dependencies si xsizeState (state x) < sizeState siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
x: Message
i: index
si: BaseELMO.State
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) si
Hobsx: HasBeenObserved (ELMO_component i) Message_dependencies si x
m': Message
H2: has_been_directly_observed (ELMO_component i) si m'
H3: msg_dep_happens_before Message_dependencies x m'sizeState (state x) < sizeState siby apply Message_full_dependencies_sizeState, full_message_dependencies_happens_before. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
x: Message
i: index
si: BaseELMO.State
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) si
Hobsx: HasBeenObserved (ELMO_component i) Message_dependencies si x
m': Message
H2: has_been_directly_observed (ELMO_component i) si m'
H3: msg_dep_happens_before Message_dependencies x m'sizeState (state x) < sizeState (state m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexIrreflexive (tc_composite_observed_before_send ELMO_component Message_dependencies)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexIrreflexive (tc_composite_observed_before_send ELMO_component Message_dependencies)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexProper (tc_composite_observed_before_send ELMO_component Message_dependencies ==> lt) (sizeState ∘ state)by apply ELMO_composite_observed_before_send_sizeState_Proper. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexProper (composite_observed_before_send ELMO_component Message_dependencies ==> lt) (sizeState ∘ state)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexchannel_authentication_prop ELMO_component (Message_sender_index idx) (Message_sender idx)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexchannel_authentication_prop ELMO_component (Message_sender_index idx) (Message_sender idx)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))channel_authenticated_message (Message_sender_index idx) (Message_sender idx) i (MkMessage s)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))option_map (Message_sender_index idx) match decide (is_Some (adr2idx idx (adr (state (MkMessage s))))) with | left Ha => Some (dexist (adr (state (MkMessage s))) Ha) | right _ => None end = Some iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))option_map (Message_sender_index idx) match decide (is_Some (adr2idx idx (idx i))) with | left Ha => Some (dexist (idx i) Ha) | right _ => None end = Some iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hadr: is_Some (adr2idx idx (idx i))option_map (Message_sender_index idx) (Some (dexist (idx i) Hadr)) = Some iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hadr: ¬ is_Some (adr2idx idx (idx i))option_map (Message_sender_index idx) None = Some iby cbn; f_equal; apply Message_sender_index_inv.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hadr: is_Some (adr2idx idx (idx i))option_map (Message_sender_index idx) (Some (dexist (idx i) Hadr)) = Some iby rewrite (adr2idx_idx idx) in Hadr; contradict Hadr; eexists. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) s
Hv: valid Send (s, None)
Ht: transition Send (s, None) = (s <+> MkObservation Send (MkMessage s), Some (MkMessage s))
Hadr: ¬ is_Some (adr2idx idx (idx i))option_map (Message_sender_index idx) None = Some iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : composite_state ELMO_component) (Hs : composite_constrained_state_prop ELMO_component s) (is : composite_state ELMO_component) (tr : list (composite_transition_item ELMO_component)), ELMO_state_to_minimal_equivocation_trace s Hs = (is, tr) → ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last is pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : composite_state ELMO_component) (Hs : composite_constrained_state_prop ELMO_component s) (is : composite_state ELMO_component) (tr : list (composite_transition_item ELMO_component)), ELMO_state_to_minimal_equivocation_trace s Hs = (is, tr) → ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last is pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ i : index, MessageDependencies (ELMO_component i) Message_dependenciesAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexIrreflexive (tc_composite_observed_before_send ELMO_component Message_dependencies)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexchannel_authentication_prop ELMO_component ?A (Message_sender idx)by intro; apply MessageDependencies_ELMO_component.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ i : index, MessageDependencies (ELMO_component i) Message_dependenciesby typeclasses eauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexIrreflexive (tc_composite_observed_before_send ELMO_component Message_dependencies)by apply ELMO_channel_authentication_prop. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited indexchannel_authentication_prop ELMO_component ?A (Message_sender idx)
The shallow and deeper version of global_equivocators agree on
states which are reachable in ELMOProtocol.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (a : Address), composite_constrained_state_prop ELMO_component s → ELMO_global_equivocators s a ↔ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (a : Address), composite_constrained_state_prop ELMO_component s → ELMO_global_equivocators s a ↔ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hs: composite_constrained_state_prop ELMO_component sELMO_global_equivocators s a ↔ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hs: composite_constrained_state_prop ELMO_component s
Hsi: ∀ k : index, UMO_reachable full_node (s k)ELMO_global_equivocators s a ↔ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
Hequiv: ELMO_global_equivocators s aglobal_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
Hequiv: global_equivocators_simple s aELMO_global_equivocators s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
Hequiv: ELMO_global_equivocators s aglobal_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
k: index
l: Label
Hrobs: rec_obs (s k) (MkObservation l m)
Hnot_sent: ¬ composite_has_been_sent ELMO_component s mglobal_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
k: index
l: Label
Hrobs: rec_obs (s k) (MkObservation l m)
Hnot_sent: ¬ composite_has_been_sent ELMO_component s mcomposite_has_been_received ELMO_component s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
k: index
l: Label
Hrobs: rec_obs (s k) (MkObservation l m)
Hnot_sent: ¬ composite_has_been_sent ELMO_component s mm ∈ messages (s k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
k: index
l: Label
Hrobs: rec_obs (s k) (MkObservation l m)
Hnot_sent: ¬ composite_has_been_sent ELMO_component s m
Hm: m ∈ messages (s k)composite_has_been_received ELMO_component s mby apply full_node_messages_iff_rec_obs; [| eexists].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
k: index
l: Label
Hrobs: rec_obs (s k) (MkObservation l m)
Hnot_sent: ¬ composite_has_been_sent ELMO_component s mm ∈ messages (s k)by apply elem_of_messages in Hm as [|]; [contradict Hnot_sent |]; exists k.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
k: index
l: Label
Hrobs: rec_obs (s k) (MkObservation l m)
Hnot_sent: ¬ composite_has_been_sent ELMO_component s m
Hm: m ∈ messages (s k)composite_has_been_received ELMO_component s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
Hequiv: global_equivocators_simple s aELMO_global_equivocators s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
i_rec: index
Hrecv: has_been_received (ELMO_component i_rec) (s i_rec) m
Hnot_sent: ¬ composite_has_been_sent ELMO_component s mELMO_global_equivocators s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
i_rec: index
Hrecv: has_been_received (ELMO_component i_rec) (s i_rec) m
Hnot_sent: ¬ composite_has_been_sent ELMO_component s m∃ m : Message, adr (state m) = a ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
i_rec: index
Hrecv: has_been_received (ELMO_component i_rec) (s i_rec) m
Hnot_sent: ¬ composite_has_been_sent ELMO_component s m(∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
i_rec: index
Hrecv: has_been_received (ELMO_component i_rec) (s i_rec) m
Hnot_sent: ¬ composite_has_been_sent ELMO_component s m∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)by apply full_node_messages_iff_rec_obs, received_in_messages. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Address
Hsi: ∀ k : index, UMO_reachable full_node (s k)
m: Message
Hadr: adr (state m) = a
i_rec: index
Hrecv: has_been_received (ELMO_component i_rec) (s i_rec) m
Hnot_sent: ¬ composite_has_been_sent ELMO_component s m∃ l : Label, rec_obs (s i_rec) (MkObservation l m)
global_equivocators_simple is equivalent to an instance
of the generic definition full_node_is_globally_equivocating.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (v : Message_validator idx), full_node_is_globally_equivocating ELMO_component (Message_sender idx) s v ↔ global_equivocators_simple s (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (v : Message_validator idx), full_node_is_globally_equivocating ELMO_component (Message_sender idx) s v ↔ global_equivocators_simple s (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
v: Message_validator idxfull_node_is_globally_equivocating ELMO_component (Message_sender idx) s v → global_equivocators_simple s (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
v: Message_validator idxglobal_equivocators_simple s (`v) → full_node_is_globally_equivocating ELMO_component (Message_sender idx) s vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
v: Message_validator idxfull_node_is_globally_equivocating ELMO_component (Message_sender idx) s v → global_equivocators_simple s (`v)by erewrite Message_sender_Some_adr by done; econstructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
v: Message_validator idx
x: Message
fngee_sender: Message_sender idx x = Some v
fngee_received: composite_has_been_received ELMO_component s x
fngee_not_sent: ¬ composite_has_been_sent ELMO_component s xglobal_equivocators_simple s (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
v: Message_validator idxglobal_equivocators_simple s (`v) → full_node_is_globally_equivocating ELMO_component (Message_sender idx) s vby apply Message_sender_Some_adr_iff. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
ges_recv: composite_has_been_received ELMO_component s ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component s ges_mMessage_sender idx ges_m = Some v
ELMO_global_equivocators can be related to
msg_dep_is_globally_equivocating,
but the proof is more complicated because
it also needs to translate between rec_obs
and CompositeHasBeenObserved
We use a full_node hypothesis so we can convert
through claims about m ∈ messages (s k) rather
than directly relating rec_obs and
CompositeHasBeenObserved.
It might be possible to use something weaker than UMO_reachable full_node
to prove
CompositeHasBeenObserved ELMO_component (elements ∘ Message_dependencies) s m
↔ ∃ (k : index) (l : label), rec_obs (s k) (MkObservation l m)
but CompositeHasBeenObserved can recurse into sent or received messages
and rec_obs only into received messages so we need some deep structural
assumption about what Send observations are allowed, even recursively
within observations of observations.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : index → BaseELMO.State, (∀ k : index, UMO_reachable full_node (s k)) → ∀ m : Message, CompositeHasBeenObserved ELMO_component Message_dependencies s m ↔ (∃ k : index, m ∈ messages (s k))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : index → BaseELMO.State, (∀ k : index, UMO_reachable full_node (s k)) → ∀ m : Message, CompositeHasBeenObserved ELMO_component Message_dependencies s m ↔ (∃ k : index, m ∈ messages (s k))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m: MessageCompositeHasBeenObserved ELMO_component Message_dependencies s m → ∃ k : index, m ∈ messages (s k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m: Message(∃ k : index, m ∈ messages (s k)) → CompositeHasBeenObserved ELMO_component Message_dependencies s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m: MessageCompositeHasBeenObserved ELMO_component Message_dependencies s m → ∃ k : index, m ∈ messages (s k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m: Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) mm ∈ messages (s k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m, m': Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) m'
Hdepth: msg_dep_happens_before Message_dependencies m m'm ∈ messages (s k)by apply elem_of_messages.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m: Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) mm ∈ messages (s k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m, m': Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) m'
Hdepth: msg_dep_happens_before Message_dependencies m m'm ∈ messages (s k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m, m': Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) m'
Hdepth: msg_dep_happens_before Message_dependencies m m'
H2: m' ∈ messages (s k)m ∈ messages (s k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m, m': Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) m'
Hdepth: msg_dep_happens_before Message_dependencies m m'
H2: m' ∈ messages (s k)m <hb m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m, m': Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) m'
H2: m' ∈ messages (s k)∀ x y : Message, msg_dep_rel Message_dependencies x y → immediate_dependency x yby intros x y Hdep; apply elem_of_list_to_set in Hdep.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m, m': Message
k: index
Hobs: has_been_directly_observed (ELMO_component k) (s k) m'
H2: m' ∈ messages (s k)∀ x y : Message, x ∈ Message_dependencies y → x ∈ messages (state y)by intros [k Hm%elem_of_messages]; constructor; exists k. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: index → BaseELMO.State
Hs: ∀ k : index, UMO_reachable full_node (s k)
m: Message(∃ k : index, m ∈ messages (s k)) → CompositeHasBeenObserved ELMO_component Message_dependencies s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (v : Message_validator idx), composite_constrained_state_prop ELMO_component s → ELMO_global_equivocators s (`v) ↔ msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) s vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (v : Message_validator idx), composite_constrained_state_prop ELMO_component s → ELMO_global_equivocators s (`v) ↔ msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) s vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component sELMO_global_equivocators s (`v) ↔ msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) s vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Messageadr (state m) = `v ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s m ↔ MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)adr (state m) = `v ∧ (∃ (k : index) (l : Label), rec_obs (s k) (MkObservation l m)) ∧ ¬ composite_has_been_sent ELMO_component s m ↔ MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)adr (state m) = `v ∧ (∃ k : index, m ∈ messages (s k)) ∧ ¬ composite_has_been_sent ELMO_component s m ↔ MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)adr (state m) = `v ∧ CompositeHasBeenObserved ELMO_component Message_dependencies s m ∧ ¬ composite_has_been_sent ELMO_component s m ↔ MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)adr (state m) = `v ∧ CompositeHasBeenObserved ELMO_component Message_dependencies s m ∧ ¬ composite_has_been_sent ELMO_component s m → MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v m → adr (state m) = `v ∧ CompositeHasBeenObserved ELMO_component Message_dependencies s m ∧ ¬ composite_has_been_sent ELMO_component s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)adr (state m) = `v ∧ CompositeHasBeenObserved ELMO_component Message_dependencies s m ∧ ¬ composite_has_been_sent ELMO_component s m → MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v mby constructor; [apply Message_sender_Some_adr_iff |..].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)
H3: adr (state m) = `v
H4: CompositeHasBeenObserved ELMO_component Message_dependencies s m
H5: ¬ composite_has_been_sent ELMO_component s mMsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)MsgDepGlobalEquivocationEvidence ELMO_component Message_dependencies (Message_sender idx) s v m → adr (state m) = `v ∧ CompositeHasBeenObserved ELMO_component Message_dependencies s m ∧ ¬ composite_has_been_sent ELMO_component s mby symmetry; apply Message_sender_Some_adr_iff. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
v: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s
m: Message
H2: ∀ k : index, UMO_reachable full_node (s k)
mdgee_sender: Message_sender idx m = Some v
mdgee_rec_observed: CompositeHasBeenObserved ELMO_component Message_dependencies s m
mdgee_not_sent: ¬ composite_has_been_sent ELMO_component s madr (state m) = `vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (v : Message_validator idx), composite_constrained_state_prop ELMO_component s → ELMO_global_equivocators s (`v) ↔ global_equivocators_simple s (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ (s : VLSM.state ELMOProtocol) (v : Message_validator idx), composite_constrained_state_prop ELMO_component s → ELMO_global_equivocators s (`v) ↔ global_equivocators_simple s (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component sELMO_global_equivocators s (`a) ↔ global_equivocators_simple s (`a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component smsg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) s a ↔ global_equivocators_simple s (`a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component smsg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) s a ↔ full_node_is_globally_equivocating ELMO_component (Message_sender idx) s aby apply ELMO_component_message_dependencies_full_node_condition. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
a: Message_validator idx
Hs: composite_constrained_state_prop ELMO_component s∀ i : index, message_dependencies_full_node_condition_prop (ELMO_component i) Message_dependencies
If s is a reachable state in E where the state of component i has the form si' <+> (l, m),
let s' be the composite state which has component i equal to si' and the other components
the same as those of s. If all global equivocators of s' are also
global equivocators in s then s' is also reachable in E and also
it is a valid transition in E to go from s to s' with
label l from the new observation and either sending or receiving m
as l says.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs_pre: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs_pre: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs_pre: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last is pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) vForall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs_pre: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last is pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
Htr_min: finite_valid_trace_init_to ReachELMO is s trForall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) trForall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators sf) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) trForall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators sf) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO sForall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators sf) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sfForall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators sf) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sfForall ?P trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf∀ x : transition_item, ?P x → ELMO_equivocating_validators (destination x) ⊆ ELMO_equivocating_validators sfby apply IHHtr_min; [| intros * ->; eapply Hall; simplify_list_eq].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sfForall ?P trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf∀ x : transition_item, (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) x → ELMO_equivocating_validators (destination x) ⊆ ELMO_equivocating_validators sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf
x: transition_item
a: Address
Ha: a ∈ ELMO_equivocating_validators sa ∈ ELMO_equivocating_validators sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf
x: transition_item
a: Address
Ha: a ∈ ELMO_equivocating_validators s
Hv: ∃ v : Message_validator idx, `v = aa ∈ ELMO_equivocating_validators sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf
x: transition_item
v: Message_validator idx
Ha: `v ∈ ELMO_equivocating_validators s`v ∈ ELMO_equivocating_validators sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf
x: transition_item
v: Message_validator idx
Heqv: is_equivocating s (`v)
Hv: `v ∈ state_validators s`v ∈ ELMO_equivocating_validators sfAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf
x: transition_item
v: Message_validator idx
Heqv: is_equivocating s (`v)
Hv: `v ∈ state_validators sis_equivocating sf (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
IHHtr_min: composite_constrained_state_prop ELMO_component s → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hs: valid_state_prop ReachELMO s
Hsf: valid_state_prop ReachELMO sf
x: transition_item
v: Message_validator idx
Heqv: msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) s v
Hv: `v ∈ state_validators sis_equivocating sf (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
Hs: valid_state_prop ReachELMO (finite_trace_last si tr)
IHHtr_min: composite_constrained_state_prop ELMO_component (finite_trace_last si tr) → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators (finite_trace_last si tr)) tr
Ht: input_valid_transition ReachELMO l (finite_trace_last si tr, iom) ( sf, oom)
Hsf: valid_state_prop ReachELMO sf
x: transition_item
v: Message_validator idx
Hv: `v ∈ state_validators (finite_trace_last si tr)
Heqv: msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si tr) vis_equivocating sf (`v)by apply ELMO_global_equivocators_iff_msg_dep_equivocation. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sf: VLSM.state ReachELMO
Hs_pre: composite_constrained_state_prop ELMO_component sf
si: VLSM.state ReachELMO
tr: list transition_item
iom, oom: option Message
l: VLSM.label ReachELMO
Hall: ∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v
Hs: valid_state_prop ReachELMO (finite_trace_last si tr)
IHHtr_min: composite_constrained_state_prop ELMO_component (finite_trace_last si tr) → (∀ (pre suf : list (composite_transition_item ELMO_component)) (item : composite_transition_item ELMO_component), tr = pre ++ [item] ++ suf → ∀ v : Message_validator idx, msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (finite_trace_last si pre) v → msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination item) v) → Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators (finite_trace_last si tr)) tr
Ht: input_valid_transition ReachELMO l (finite_trace_last si tr, iom) ( sf, oom)
Hsf: valid_state_prop ReachELMO sf
x: transition_item
v: Message_validator idx
Hv: `v ∈ state_validators (finite_trace_last si tr)
Heqv: msg_dep_is_globally_equivocating ELMO_component Message_dependencies (Message_sender idx) (destination {| l := l; input := iom; destination := sf; output := oom |}) vis_equivocating sf (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr) → finite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr) → finite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)finite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)Forall (λ item : transition_item, ELMO_not_heavy (destination item)) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) trfinite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)Forall (λ item : transition_item, ELMO_not_heavy (destination item)) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) trForall (λ item : transition_item, ELMO_not_heavy (destination item)) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr∀ x : transition_item, (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) x → ELMO_not_heavy (destination x)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hheavy: ELMO_not_heavy s∀ x : transition_item, (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) x → ELMO_not_heavy (destination x)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hheavy: ELMO_not_heavy s
item: transition_item
Hitem: (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) item(equivocation_fault (destination item) <= threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hheavy: ELMO_not_heavy s
item: transition_item
Hitem: (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) item(equivocation_fault (destination item) <= equivocation_fault s)%Rby intro a; apply Hitem.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr
Hheavy: ELMO_not_heavy s
item: transition_item
Hitem: (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) itemequivocating_validators (destination item) ⊆ equivocating_validators sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) trfinite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s trfinite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s trForall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) trfinite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s trForall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
item: transition_item
Hitem: item ∈ tr
m: Message
Hobs: input item = Some mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
item: transition_item
Hitem: item ∈ tr
m: Message
Hobs: input item = Some mhas_been_directly_observed ELMOProtocol s mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
item: transition_item
Hitem: item ∈ tr
m: Message
Hobs: input item = Some mconstrained_state_prop {| vlsm_type := free_composite_vlsm ELMO_component; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint |} sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
item: transition_item
Hitem: item ∈ tr
m: Message
Hobs: input item = Some mhas_been_directly_observed {| vlsm_type := free_composite_vlsm ELMO_component; vlsm_machine := free_composite_vlsm_machine ELMO_component |} s mby generalize Hs; apply VLSM_incl_valid_state, vlsm_incl_preloaded_with_all_messages_vlsm.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
item: transition_item
Hitem: item ∈ tr
m: Message
Hobs: input item = Some mconstrained_state_prop {| vlsm_type := free_composite_vlsm ELMO_component; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint |} sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
item: transition_item
Hitem: item ∈ tr
m: Message
Hobs: input item = Some mhas_been_directly_observed {| vlsm_type := free_composite_vlsm ELMO_component; vlsm_machine := free_composite_vlsm_machine ELMO_component |} s mby apply Exists_exists; eexists; cbn; eauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
item: transition_item
Hitem: item ∈ tr
m: Message
Hobs: input item = Some mtrace_has_message item_sends_or_receives m trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
Hs_pre:= VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs: composite_constrained_state_prop ELMO_component s
is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) trfinite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s, is: composite_state ELMO_component
tr: list (composite_transition_item ELMO_component)
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Htr_min: finite_valid_trace_init_to ReachELMO is s tr
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) trfinite_valid_trace_init_to ELMOProtocol is s trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) []
si: VLSM.state ReachELMO
Hsi: initial_state_prop si
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) []finite_valid_trace_init_to ELMOProtocol si si []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
si, s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s trfinite_valid_trace_init_to ELMOProtocol si sf (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])by split; [rapply @finite_valid_trace_from_to_empty; apply initial_state_is_valid |].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) []
si: VLSM.state ReachELMO
Hsi: initial_state_prop si
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) []finite_valid_trace_init_to ELMOProtocol si si []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
si, s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s trfinite_valid_trace_init_to ELMOProtocol si sf (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr ∧ ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr ∧ (∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m)
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s trfinite_valid_trace_init_to ELMOProtocol si sf (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hall_not_heavy: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
Hall_input_valid: Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s trfinite_valid_trace_init_to ELMOProtocol si sf (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Htr_min: finite_valid_trace_init_to ReachELMO si s tr
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trfinite_valid_trace_init_to ELMOProtocol si sf (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trfinite_valid_trace_from_to ELMOProtocol si sf (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Ht: input_valid_transition ReachELMO l ( s, iom) (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trinput_valid_transition ELMOProtocol l (s, iom) (sf, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trinput_valid_transition ELMOProtocol l (s, iom) (sf, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trvalid_state_prop ELMOProtocol sAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s troption_valid_message_prop ELMOProtocol iomAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trELMO_global_constraint l (s, iom)by apply valid_trace_last_pstate in IHHtr.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trvalid_state_prop ELMOProtocol sby destruct iom; [apply Hmsg_valid | apply option_valid_message_None].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s troption_valid_message_prop ELMOProtocol iomAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
l: VLSM.label ReachELMO
Hsf_not_heavy: ELMO_not_heavy (destination {| l := l; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid l (s, iom)
Ht: transition l (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := l; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trELMO_global_constraint l (s, iom)by hnf; replace (composite_transition _ _ _) with (sf, oom). Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
tr: list transition_item
sf: VLSM.state ReachELMO
iom, oom: option Message
i: index
Hsf_not_heavy: ELMO_not_heavy (destination {| l := existT i Receive; input := iom; destination := sf; output := oom |})
si, s: VLSM.state ReachELMO
Hs_pre: valid_state_prop ReachELMO s
Hy: valid (existT i Receive) (s, iom)
Ht: transition (existT i Receive) (s, iom) = (sf, oom)
Hmsg_valid: ∀ m : Message, input {| l := existT i Receive; input := iom; destination := sf; output := oom |} = Some m → valid_message_prop ELMOProtocol m
IHHtr_min: Forall (λ item : transition_item, ELMO_not_heavy (destination item)) tr → Forall (λ item : transition_item, ∀ m : Message, input item = Some m → valid_message_prop ELMOProtocol m) tr → finite_valid_trace_init_to ELMOProtocol si s tr
IHHtr: finite_valid_trace_from_to ELMOProtocol si s trELMO_global_constraint (existT i Receive) (s, iom)
Validators
Inductive ELMOProtocol_valid_transition : index -> Label -> VLSM.state ELMOProtocol -> VLSM.state ELMOProtocol -> Message -> Prop := | ep_valid_receive : forall (i : index) (s1 s2 : VLSM.state ELMOProtocol) (m : Message), valid_transition ELMOProtocol (existT i Receive) s1 (Some m) s2 None -> ELMOProtocol_valid_transition i Receive s1 s2 m | ep_valid_send : forall (i : index) (s1 s2 : VLSM.state ELMOProtocol) (m : Message), valid_transition ELMOProtocol (existT i Send) s1 None s2 (Some m) -> ELMOProtocol_valid_transition i Send s1 s2 m.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
s1, s2: State
m: MessageELMO_component_RAM_transition i l s1 s2 m → ∀ a : Address, local_equivocators_full s2 a ↔ local_equivocators_full s1 a ∨ a = adr (state m) ∧ l = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages s1 ∧ incomparable m m')by inversion 1 as [? ? ? [_ Ht] | ? ? ? [_ Ht]]; inversion Ht; setoid_rewrite lefo_alt; itauto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
s1, s2: State
m: MessageELMO_component_RAM_transition i l s1 s2 m → ∀ a : Address, local_equivocators_full s2 a ↔ local_equivocators_full s1 a ∨ a = adr (state m) ∧ l = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages s1 ∧ incomparable m m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i Send (sigma i) s' m → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a → global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i Send (sigma i) s' m → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a → global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) a → global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
a: Address
ges_m: Message
ges_adr: adr (state ges_m) = a
j: index
Hrcv: has_been_received (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mglobal_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
Hrcv: has_been_received (ELMO_component i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mglobal_equivocators_simple sigma (adr (state ges_m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
n: j ≠ iglobal_equivocators_simple sigma (adr (state ges_m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
Hrcv: has_been_received (ELMO_component i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mglobal_equivocators_simple sigma (adr (state ges_m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mglobal_equivocators_simple sigma (adr (state ges_m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m¬ composite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
j: index
Hsnd: has_been_sent (ELMO_component j) (sigma j) ges_mhas_been_sent (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) j) ges_mby rewrite decide_True by done; right.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
Hsnd: has_been_sent (ELMO_component i) (sigma i) ges_mges_m ∈ map message (if decide True then MkObservation Send (MkMessage (sigma i)) :: filter isSend (obs (sigma i)) else filter isSend (obs (sigma i)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
n: j ≠ iglobal_equivocators_simple sigma (adr (state ges_m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
n: j ≠ i¬ composite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
n: j ≠ i
k: index
Hsnd: has_been_sent (ELMO_component k) (sigma k) ges_mcomposite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
n: j ≠ i
Hsnd: has_been_sent (ELMO_component i) (sigma i) ges_mcomposite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mby rewrite decide_True by done; right. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
H2: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_m
n: j ≠ i
Hsnd: has_been_sent (ELMO_component i) (sigma i) ges_mges_m ∈ map message (if decide True then MkObservation Send (MkMessage (sigma i)) :: filter isSend (obs (sigma i)) else filter isSend (obs (sigma i)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i Send (sigma i) s' m → ¬ global_equivocators_simple sigma (idx i) → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i Send (sigma i) s' m → ¬ global_equivocators_simple sigma (idx i) → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Addressglobal_equivocators_simple sigma a → global_equivocators_simple (state_update ELMO_component sigma i s') aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))global_equivocators_simple sigma a → global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx iglobal_equivocators_simple sigma a → global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx i
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mglobal_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx i
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_received ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx i
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx i
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_received ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx i
ges_m: Message
ges_adr: adr (state ges_m) = a
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mhas_been_received (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) j) ges_mby cbn; rewrite decide_False by auto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
n: adr (state ges_m) ≠ idx i
Hrcv: has_been_received (ELMO_component i) (sigma i) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mhas_been_received (ELMO_component i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx i
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i)))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
a: Address
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
n: a ≠ idx i
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m
j: index
Hsnd: has_been_sent (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))) j) ges_mhas_been_sent (ELMO_component j) (sigma j) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
n: adr (state ges_m) ≠ idx i
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m
Hsnd: has_been_sent (ELMO_component i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) ges_mhas_been_sent (ELMO_component i) (sigma i) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
ges_m: Message
n: adr (state ges_m) ≠ idx i
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m
Hsnd: ges_m ∈ message (MkObservation Send (MkMessage (sigma i))) :: map message (filter isSend (obs (sigma i)))has_been_sent (ELMO_component i) (sigma i) ges_mby contradict n; apply ELMO_reachable_adr. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: ELMO_component_RAM_transition i Send (sigma i) (sigma i <+> MkObservation Send (MkMessage (sigma i))) (MkMessage (sigma i))
Hneqvi: ¬ global_equivocators_simple sigma (idx i)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsnd: MkMessage (sigma i) ∈ message (MkObservation Send (MkMessage (sigma i))) :: map message (filter isSend (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma (MkMessage (sigma i))
ges_recv: composite_has_been_received ELMO_component sigma (MkMessage (sigma i))
n: adr (state (MkMessage (sigma i))) ≠ idx ihas_been_sent (ELMO_component i) (sigma i) (MkMessage (sigma i))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i Receive (sigma i) s' m → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ global_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i Receive (sigma i) s' m → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ global_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) mglobal_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) a → global_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) mglobal_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma m → global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) mglobal_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) a → global_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
j: index
Hrcv: has_been_received (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mglobal_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
n: j ≠ iglobal_equivocators_simple sigma (adr (state ges_m)) ∨ adr (state ges_m) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: has_been_received (ELMO_component i) (sigma i <+> MkObservation Receive m) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mglobal_equivocators_simple sigma (adr (state ges_m)) ∨ adr (state ges_m) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
n: j ≠ iglobal_equivocators_simple sigma (adr (state ges_m)) ∨ adr (state ges_m) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
n: j ≠ i¬ composite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
n: j ≠ i
k: index
Hsnd: has_been_sent (ELMO_component k) (sigma k) ges_mcomposite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
n: j ≠ i
Hsnd: has_been_sent (ELMO_component i) (sigma i) ges_mcomposite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mby rewrite decide_False by auto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
n: j ≠ i
Hsnd: has_been_sent (ELMO_component i) (sigma i) ges_mges_m ∈ map message (if decide False then MkObservation Receive m :: filter isSend (obs (sigma i)) else filter isSend (obs (sigma i)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: has_been_received (ELMO_component i) (sigma i <+> MkObservation Receive m) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mglobal_equivocators_simple sigma (adr (state ges_m)) ∨ adr (state ges_m) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: ges_m ∈ message (MkObservation Receive m) :: map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mglobal_equivocators_simple sigma (adr (state ges_m)) ∨ adr (state ges_m) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) (message (MkObservation Receive m))global_equivocators_simple sigma (adr (state (message (MkObservation Receive m)))) ∨ adr (state (message (MkObservation Receive m))) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mglobal_equivocators_simple sigma (adr (state ges_m)) ∨ adr (state ges_m) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) (message (MkObservation Receive m))global_equivocators_simple sigma (adr (state (message (MkObservation Receive m)))) ∨ adr (state (message (MkObservation Receive m))) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) (message (MkObservation Receive m))¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) (message (MkObservation Receive m))
j: index
Hsnd: has_been_sent (ELMO_component j) (sigma j) mhas_been_sent (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) j) (message (MkObservation Receive m))by cbn; rewrite decide_False by auto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) (message (MkObservation Receive m))
Hsnd: has_been_sent (ELMO_component i) (sigma i) mhas_been_sent (ELMO_component i) (sigma i <+> MkObservation Receive m) (message (MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mglobal_equivocators_simple sigma (adr (state ges_m)) ∨ adr (state ges_m) = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m¬ composite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
j: index
Hsnd: has_been_sent (ELMO_component j) (sigma j) ges_mhas_been_sent (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) j) ges_mby cbn; rewrite decide_False by auto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: ges_m ∈ map message (filter isReceive (obs (sigma i)))
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_m
Hsnd: has_been_sent (ELMO_component i) (sigma i) ges_mhas_been_sent (ELMO_component i) (sigma i <+> MkObservation Receive m) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) mglobal_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma m → global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mglobal_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma mglobal_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mglobal_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_received ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_received ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
j: index
Hrcv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mhas_been_received (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) j) ges_mby cbn; rewrite decide_True, map_cons by done; right.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
Hrcv: has_been_received (ELMO_component i) (sigma i) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mhas_been_received (ELMO_component i) (sigma i <+> MkObservation Receive m) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) ges_mby destruct (decide (j = i)); subst; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
a: Address
H6: ELMO_recv_valid (sigma i) m
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m
j: index
Hsnd: has_been_sent (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) j) ges_mhas_been_sent (ELMO_component j) (sigma j) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma mglobal_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma mcomposite_has_been_received ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma m¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) mby exists i; state_update_simpl; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma mcomposite_has_been_received ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma m¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma m
j: index
Hsnd: has_been_sent (ELMO_component j) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m) j) mhas_been_sent (ELMO_component j) (sigma j) mby cbn in Hsnd; rewrite decide_False in Hsnd by auto. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
H6: ELMO_recv_valid (sigma i) m
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma m
Hsnd: has_been_sent (ELMO_component i) (sigma i <+> MkObservation Receive m) mhas_been_sent (ELMO_component i) (sigma i) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → ELMO_component_RAM_transition i Receive (sigma i) s' m → composite_has_been_directly_observed ELMO_component sigma m → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → ELMO_component_RAM_transition i Receive (sigma i) s' m → composite_has_been_directly_observed ELMO_component sigma m → ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hobs: composite_has_been_directly_observed ELMO_component sigma m
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma i s') a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hobs: composite_has_been_directly_observed ELMO_component sigma m
a: Addressglobal_equivocators_simple sigma a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma m ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hobs: composite_has_been_directly_observed ELMO_component sigma m
Hnsend: ¬ composite_has_been_sent ELMO_component sigma mglobal_equivocators_simple sigma (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hobs: composite_has_been_directly_observed ELMO_component sigma m
Hnsend: ¬ composite_has_been_sent ELMO_component sigma mELMO_global_equivocators sigma (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hobs: composite_has_been_directly_observed ELMO_component sigma m
Hnsend: ¬ composite_has_been_sent ELMO_component sigma m∃ (k : index) (l : Label), rec_obs (sigma k) (MkObservation l m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
k: index
Hobs: has_been_directly_observed (ELMO_component k) (sigma k) m
Hnsend: ¬ composite_has_been_sent ELMO_component sigma m∃ l : Label, rec_obs (sigma k) (MkObservation l m)by eapply ELMO_full_node_reachable, composite_constrained_state_project. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
k: index
Hobs: has_been_directly_observed (ELMO_component k) (sigma k) m
Hnsend: ¬ composite_has_been_sent ELMO_component sigma mUMO_reachable full_node (sigma k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → ELMO_component_RAM_transition i Send (sigma i) s' m → ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → ELMO_component_RAM_transition i Send (sigma i) s' m → ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' mELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' minput_valid_transition ReachELMO (existT i Send) (sigma, None) (state_update ELMO_component sigma i s', Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
Hte: input_valid_transition ReachELMO (existT i Send) (sigma, None) (state_update ELMO_component sigma i s', Some m)ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' minput_valid_transition ReachELMO (existT i Send) (sigma, None) (state_update ELMO_component sigma i s', Some m)by repeat split; [| apply option_valid_message_None | constructor].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
s1, s2: State
m0: Message
Hvi: valid Send (sigma i, None)
Hti: transition Send (sigma i, None) = (s', Some m)
H3: s1 = sigma i
H4: s2 = s'
H5: m0 = m
s: State
H6: s = sigma i
H7: sigma i <+> MkObservation Send (MkMessage (sigma i)) = s'
H8: MkMessage (sigma i) = minput_valid_transition ReachELMO (existT i Send) (sigma, None) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))), Some (MkMessage (sigma i)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
Hte: input_valid_transition ReachELMO (existT i Send) (sigma, None) (state_update ELMO_component sigma i s', Some m)ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: AddressELMO_global_equivocators (state_update ELMO_component sigma i s') a ∧ a ∈ list_to_set (map idx (enum index)) → ELMO_global_equivocators sigma a ∧ a ∈ list_to_set (map idx (enum index))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma i s') a ∧ a ∈ list_to_set (map idx (enum index)) → global_equivocators_simple sigma a ∧ a ∈ list_to_set (map idx (enum index))by eapply global_equivocators_simple_step_update_send. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Send (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: Address
Heqv: global_equivocators_simple (state_update ELMO_component sigma i s') a
H2: a ∈ list_to_set (map idx (enum index))global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → ELMO_component_RAM_transition i Receive (sigma i) s' m → ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigma ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → ELMO_component_RAM_transition i Receive (sigma i) s' m → ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigma ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' mELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigma ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' minput_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: input_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigma ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' minput_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)by repeat split; [| apply any_message_is_valid_in_preloaded | constructor].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
s1, s2: State
m0: Message
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (s', None)
H3: s1 = sigma i
H4: s2 = s'
H5: m0 = m
s: State
m1: Message
H6: ELMO_recv_valid (sigma i) m
H7: s = sigma i
H2: m1 = m
H9: sigma i <+> MkObservation Receive m = s'input_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m), None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: input_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigma ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigma ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: Addressa ∈ ELMO_equivocating_validators (state_update ELMO_component sigma i s') → a ∈ ELMO_equivocating_validators sigma ∨ a = adr (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: AddressELMO_global_equivocators (state_update ELMO_component sigma i s') a ∧ a ∈ list_to_set (map idx (enum index)) → ELMO_global_equivocators sigma a ∧ a ∈ list_to_set (map idx (enum index)) ∨ a = adr (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma i s') a ∧ a ∈ list_to_set (map idx (enum index)) → global_equivocators_simple sigma a ∧ a ∈ list_to_set (map idx (enum index)) ∨ a = adr (state m)by eapply global_equivocators_simple_step_update_receive in Heqv as [Heqv | []]; [left; split | right |]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: Address
Heqv: global_equivocators_simple (state_update ELMO_component sigma i s') a
Hin: a ∈ list_to_set (map idx (enum index))global_equivocators_simple sigma a ∧ a ∈ list_to_set (map idx (enum index)) ∨ a = adr (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → composite_has_been_directly_observed ELMO_component sigma m → ELMO_component_RAM_transition i Receive (sigma i) s' m → ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Messagecomposite_constrained_state_prop ELMO_component sigma → composite_has_been_directly_observed ELMO_component sigma m → ELMO_component_RAM_transition i Receive (sigma i) s' m → ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' mELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' minput_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: input_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' minput_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)by repeat split; [| apply any_message_is_valid_in_preloaded | constructor].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
s1, s2: State
m0: Message
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (s', None)
H3: s1 = sigma i
H4: s2 = s'
H5: m0 = m
s: State
m1: Message
H6: ELMO_recv_valid (sigma i) m
H7: s = sigma i
H2: m1 = m
H9: sigma i <+> MkObservation Receive m = s'input_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m), None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: input_valid_transition ReachELMO (existT i Receive) (sigma, Some m) (state_update ELMO_component sigma i s', None)ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')ELMO_equivocating_validators (state_update ELMO_component sigma i s') ⊆ ELMO_equivocating_validators sigmaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: AddressELMO_global_equivocators (state_update ELMO_component sigma i s') a ∧ a ∈ list_to_set (map idx (enum index)) → ELMO_global_equivocators sigma a ∧ a ∈ list_to_set (map idx (enum index))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma i s') a ∧ a ∈ list_to_set (map idx (enum index)) → global_equivocators_simple sigma a ∧ a ∈ list_to_set (map idx (enum index))by eapply global_equivocators_simple_step_update_receive_already_observed. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
s': State
m: Message
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hsent: composite_has_been_directly_observed ELMO_component sigma m
Ht: ELMO_component_RAM_transition i Receive (sigma i) s' m
Hte: valid_state_prop ReachELMO (state_update ELMO_component sigma i s')
a: Address
Heqv: global_equivocators_simple (state_update ELMO_component sigma i s') a
H2: a ∈ list_to_set (map idx (enum index))global_equivocators_simple sigma a
The following lemmas build towards proving that ELMO components are validating
for the ELMO protocol.
If the state
s
is valid in the ELMO protocol, and s
can take a valid transition
involving a message m
, then m
is a valid message in the ELMO protocol.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
i: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop sivalid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
i: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop sivalid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
i: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMOvalid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
i: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
Htr_min: ∀ (Hs_pre : composite_constrained_state_prop ELMO_component s := VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs) (is : composite_state ELMO_component) (tr : list (composite_transition_item ELMO_component)), ELMO_state_to_minimal_equivocation_trace s Hs_pre = (is, tr) → finite_valid_trace_init_to ELMOProtocol is s trvalid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
Hs: valid_state_prop ELMOProtocol s
i: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
is_min: composite_state ELMO_component
tr_min: list (composite_transition_item ELMO_component)
Heqtr_min: ELMO_state_to_minimal_equivocation_trace s (VLSM_incl_valid_state (constrained_preloaded_incl (free_composite_vlsm ELMO_component) ELMO_global_constraint) s Hs) = (is_min, tr_min)
Htr_min: finite_valid_trace_init_to ELMOProtocol is_min s tr_minvalid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
i: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
is_min: composite_state ELMO_component
tr_min: list (composite_transition_item ELMO_component)
Htr_min: finite_valid_trace_init_to ELMOProtocol is_min s tr_min
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ ELMO_equivocating_validators s) tr_minvalid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: composite_state ELMO_component
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
is_min: composite_state ELMO_component
tr_min: list (composite_transition_item ELMO_component)
Htr_min: finite_valid_trace_init_to ELMOProtocol is_min s tr_min
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr_minvalid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0: VLSM.state ELMOProtocol
Hsi0: initial_state_prop si0
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) []valid_state_prop ELMOProtocol (state_update ELMO_component si0 i si) ∧ ELMO_equivocating_validators (state_update ELMO_component si0 i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0: VLSM.state ELMOProtocol
Hsi0: initial_state_prop si0
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) []valid_state_prop ELMOProtocol (state_update ELMO_component si0 i si) ∧ ELMO_equivocating_validators (state_update ELMO_component si0 i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0: VLSM.state ELMOProtocol
Hsi0: initial_state_prop si0
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) []valid_state_prop ELMOProtocol si0 ∧ ELMO_equivocating_validators si0 ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0: VLSM.state ELMOProtocol
Hsi0: initial_state_prop si0
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) []ELMO_equivocating_validators si0 ⊆ s_eqvs ∪ {[idx i]}by apply empty_subseteq.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0: VLSM.state ELMOProtocol
Hsi0: initial_state_prop si0
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) []∅ ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr ∧ ELMO_equivocating_validators (destination {| l := l; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := l; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := l; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := l; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop ELMOProtocol svalid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := l; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop ELMOProtocol s
Hsf: valid_state_prop ELMOProtocol sfvalid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
l: VLSM.label ELMOProtocol
Ht: input_valid_transition ELMOProtocol l ( s, iom) (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := l; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sfvalid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Ht: input_valid_transition ELMOProtocol (existT j lj) (s, iom) ( sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sfvalid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Ht: input_valid_transition ELMOProtocol (existT j lj) (s, iom) ( sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ ivalid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Ht: input_valid_transition ELMOProtocol (existT j lj) (s, iom) ( sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)by rewrite state_update_twice_neq.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
s0: BaseELMO.State
Hc: match lj with | Receive => ELMO_not_heavy (state_update ELMO_component s j s0) | Send => True end
Ht: (state_update ELMO_component s j s0, oom) = (state_update ELMO_component s j s0, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (state_update ELMO_component s j s0) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s j s0)
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) (state_update ELMO_component s j s0, oom)(state_update ELMO_component (state_update ELMO_component s i si) j s0, oom) = (state_update ELMO_component (state_update ELMO_component s j s0) i si, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]} → valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]} → valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}by apply union_subseteq; split; [apply union_subseteq_l' | apply union_subseteq_r'].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}ELMO_equivocating_validators sf ∪ {[idx i]} ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si) ∧ ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}valid_state_prop ELMOProtocol (state_update ELMO_component sf i si)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}input_valid_transition ELMOProtocol (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}ELMO_global_constraint (existT j lj) (state_update ELMO_component s i si, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j Receive) (s, iom)
Hc: ELMO_global_constraint (existT j Receive) (s, iom)
Ht: transition (existT j Receive) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j Receive; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j Receive) ( s, iom) (sf, oom)
Ht': composite_transition ELMO_component (existT j Receive) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}ELMO_global_constraint (existT j Receive) (state_update ELMO_component s i si, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j Receive) (s, iom)
Hc: ELMO_global_constraint (existT j Receive) (s, iom)
Ht: transition (existT j Receive) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j Receive; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j Receive) ( s, iom) (sf, oom)
Ht': composite_transition ELMO_component (existT j Receive) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}let (s', _) := composite_transition ELMO_component (existT j Receive) (state_update ELMO_component s i si, iom) in ELMO_not_heavy s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j Receive) (s, iom)
Hc: ELMO_global_constraint (existT j Receive) (s, iom)
Ht: transition (existT j Receive) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j Receive; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j Receive) ( s, iom) (sf, oom)
Ht': composite_transition ELMO_component (existT j Receive) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}ELMO_not_heavy (state_update ELMO_component sf i si)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j Receive) (s, iom)
Hc: ELMO_global_constraint (existT j Receive) (s, iom)
Ht: transition (existT j Receive) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j Receive; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j Receive) ( s, iom) (sf, oom)
Ht': composite_transition ELMO_component (existT j Receive) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}(equivocation_fault (state_update ELMO_component sf i si) <= sum_weights (s_eqvs ∪ {[idx i]}))%Rby intro; apply Hsfisi_eqvs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j Receive) (s, iom)
Hc: ELMO_global_constraint (existT j Receive) (s, iom)
Ht: transition (existT j Receive) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j Receive; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j Receive) ( s, iom) (sf, oom)
Ht': composite_transition ELMO_component (existT j Receive) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Hsfisi_eqvs': ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}
Hsfisi_eqvs: ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}equivocating_validators (state_update ELMO_component sf i si) ⊆ s_eqvs ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s trELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)finite_valid_trace_from_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)finite_valid_trace_from ReachELMO si0 (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)input_valid_transition ReachELMO (existT j lj) (finite_trace_last si0 tr, iom) (sf, oom)by apply valid_trace_get_last in Htr_min.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)s = finite_trace_last si0 trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])option_valid_message_prop ReachELMO iomAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])valid (existT j lj) (state_update ELMO_component s i si, iom)by apply any_message_is_valid_in_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])option_valid_message_prop ReachELMO iomby cbn; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])valid (existT j lj) (state_update ELMO_component s i si, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)ELMO_equivocating_validators (state_update ELMO_component sf i si) ⊆ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
a: Address
Ha: a ∈ ELMO_equivocating_validators (state_update ELMO_component sf i si)a ∈ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
a: Address
Ha: a ∈ ELMO_equivocating_validators (state_update ELMO_component sf i si)
Hmeqv: ∃ v : Message_validator idx, `v = aa ∈ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
Ha: `v ∈ ELMO_equivocating_validators (state_update ELMO_component sf i si)`v ∈ ELMO_equivocating_validators sf ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx`v ∈ filter (λ v : Address, is_equivocating (state_update ELMO_component sf i si) v) (state_validators (state_update ELMO_component sf i si)) → `v ∈ filter (λ v : Address, is_equivocating sf v) (state_validators sf) ∪ {[idx i]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idxis_equivocating (state_update ELMO_component sf i si) (`v) ∧ `v ∈ state_validators (state_update ELMO_component sf i si) → is_equivocating sf (`v) ∧ `v ∈ state_validators sf ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idxglobal_equivocators_simple (state_update ELMO_component sf i si) (`v) ∧ `v ∈ list_to_set (map idx (enum index)) → global_equivocators_simple sf (`v) ∧ `v ∈ list_to_set (map idx (enum index)) ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (state_update ELMO_component sf i si k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))global_equivocators_simple sf (`v) ∧ `v ∈ list_to_set (map idx (enum index)) ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
Hrcv: has_been_received (ELMO_component i) si ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ iglobal_equivocators_simple sf (`v) ∧ `v ∈ list_to_set (map idx (enum index)) ∨ `v = idx iby cbn in Hrcv; replace si with (MkState [] (idx i)) in Hrcv; [inversion Hrcv | apply eq_State; symmetry; apply Hsi].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
Hrcv: has_been_received (ELMO_component i) si ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ iglobal_equivocators_simple sf (`v) ∧ `v ∈ list_to_set (map idx (enum index)) ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ i¬ composite_has_been_sent ELMO_component sf ges_m ∨ `v = idx i → global_equivocators_simple sf (`v) ∧ `v ∈ list_to_set (map idx (enum index)) ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ i¬ composite_has_been_sent ELMO_component sf ges_m ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ i¬ composite_has_been_sent ELMO_component sf ges_m ∨ `v = idx i → global_equivocators_simple sf (`v) ∧ `v ∈ list_to_set (map idx (enum index)) ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ i
H4: ¬ composite_has_been_sent ELMO_component sf ges_mglobal_equivocators_simple sf (`v) ∧ `v ∈ list_to_set (map idx (enum index)) ∨ `v = idx iby econstructor; [| eexists |].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ i
H4: ¬ composite_has_been_sent ELMO_component sf ges_mglobal_equivocators_simple sf (`v)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
Ha: `v ∈ list_to_set (map idx (enum index))
H3: k ≠ i¬ composite_has_been_sent ELMO_component sf ges_m ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: initial_state_prop si
Hincl: VLSM_incl ELMOProtocol ReachELMO
si0, s: VLSM.state ELMOProtocol
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: VLSM.state ELMOProtocol
iom, oom: option Message
j: index
lj: VLSM.label (ELMO_component j)
Hm: option_valid_message_prop ELMOProtocol iom
Hv: valid (existT j lj) (s, iom)
Hc: ELMO_global_constraint (existT j lj) (s, iom)
Ht: transition (existT j lj) (s, iom) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators (destination {| l := existT j lj; input := iom; destination := sf; output := oom |}) ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hsf: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (existT j lj) (s, iom) ( sf, oom)
Ht': composite_transition ELMO_component (existT j lj) (state_update ELMO_component s i si, iom) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: has_been_received (ELMO_component k) (sf k) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
i_a: index
Ha: `v = idx i_a
H3: k ≠ i¬ composite_has_been_sent ELMO_component sf ges_m ∨ `v = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
i_a: index
Ha: `v = idx i_a
H3: k ≠ i¬ composite_has_been_sent ELMO_component sf ges_m ∨ idx i_a = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_m
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i¬ composite_has_been_sent ELMO_component sf ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: composite_has_been_sent ELMO_component sf ges_mcomposite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: composite_has_been_sent ELMO_component sf ges_m
H4: ∀ (IM : index → VLSM Message) (H0 : ∀ i : index, HasBeenSentCapability (IM i)) (validator : Type) (A : validator → index) (sender : Message → option validator), sender_safety_alt_prop IM A sender → ∀ (is s : VLSM.state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (tr : list transition_item), finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr → ∀ (m : Message) (v : validator), sender m = Some v → composite_has_been_sent IM s m → has_been_sent (IM (A v)) (s (A v)) msender_safety_alt_prop ELMO_component ?A ?senderAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: composite_has_been_sent ELMO_component sf ges_m
H4: ∀ (IM : index → VLSM Message) (H0 : ∀ i : index, HasBeenSentCapability (IM i)) (validator : Type) (A : validator → index) (sender : Message → option validator), sender_safety_alt_prop IM A sender → ∀ (is s : VLSM.state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (tr : list transition_item), finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr → ∀ (m : Message) (v : validator), sender m = Some v → composite_has_been_sent IM s m → has_been_sent (IM (A v)) (s (A v)) mfinite_constrained_trace_init_to (free_composite_vlsm ELMO_component) ?is sf ?trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: composite_has_been_sent ELMO_component sf ges_m
H4: ∀ (IM : index → VLSM Message) (H0 : ∀ i : index, HasBeenSentCapability (IM i)) (validator : Type) (A : validator → index) (sender : Message → option validator), sender_safety_alt_prop IM A sender → ∀ (is s : VLSM.state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (tr : list transition_item), finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr → ∀ (m : Message) (v : validator), sender m = Some v → composite_has_been_sent IM s m → has_been_sent (IM (A v)) (s (A v)) m?sender ges_m = Some ?vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: has_been_sent (ELMO_component (?A ?v)) (sf (?A ?v)) ges_mcomposite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_mby apply channel_authentication_sender_safety, ELMO_channel_authentication_prop.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: composite_has_been_sent ELMO_component sf ges_m
H4: ∀ (IM : index → VLSM Message) (H0 : ∀ i : index, HasBeenSentCapability (IM i)) (validator : Type) (A : validator → index) (sender : Message → option validator), sender_safety_alt_prop IM A sender → ∀ (is s : VLSM.state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (tr : list transition_item), finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr → ∀ (m : Message) (v : validator), sender m = Some v → composite_has_been_sent IM s m → has_been_sent (IM (A v)) (s (A v)) msender_safety_alt_prop ELMO_component ?A ?senderdone.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: composite_has_been_sent ELMO_component sf ges_m
H4: ∀ (IM : index → VLSM Message) (H0 : ∀ i : index, HasBeenSentCapability (IM i)) (validator : Type) (A : validator → index) (sender : Message → option validator), sender_safety_alt_prop IM A sender → ∀ (is s : VLSM.state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (tr : list transition_item), finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr → ∀ (m : Message) (v : validator), sender m = Some v → composite_has_been_sent IM s m → has_been_sent (IM (A v)) (s (A v)) mfinite_constrained_trace_init_to (free_composite_vlsm ELMO_component) ?is sf ?trby apply Message_sender_Some_adr_iff.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: composite_has_been_sent ELMO_component sf ges_m
H4: ∀ (IM : index → VLSM Message) (H0 : ∀ i : index, HasBeenSentCapability (IM i)) (validator : Type) (A : validator → index) (sender : Message → option validator), sender_safety_alt_prop IM A sender → ∀ (is s : VLSM.state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (tr : list transition_item), finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr → ∀ (m : Message) (v : validator), sender m = Some v → composite_has_been_sent IM s m → has_been_sent (IM (A v)) (s (A v)) mMessage_sender idx ges_m = Some ?vAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (state_update ELMO_component s i si j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: has_been_sent (ELMO_component (Message_sender_index idx v)) (sf (Message_sender_index idx v)) ges_mcomposite_has_been_sent ELMO_component (state_update ELMO_component sf i si) ges_mby apply Message_sender_index_inv in Ha as <-. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s_eqvs: listset Address
Heqv: (sum_weights (s_eqvs ∪ {[idx i]}) <= threshold)%R
si: State
Hsi: UMO_component_initial_state_prop (idx i) si
Hincl: VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine FreeELMO (λ _ : Message, True))
si0, s: composite_state ELMO_component
tr: list transition_item
Htr_min: finite_valid_trace_init_to ELMOProtocol si0 s tr
sf: composite_state ELMO_component
iom, oom: option Message
j: index
lj: Label
Hm: option_valid_message_prop ELMOProtocol iom
Hv: ELMO_component_valid lj (s j) iom
Hc: match lj with | Receive => let (s', _) := let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om') in ELMO_not_heavy s' | Send => True end
Ht: (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component s j si', om')) = (sf, oom)
Hall: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr
Hsf_eqvs: ELMO_equivocating_validators sf ⊆ s_eqvs
IHHtr_min: Forall (λ item : transition_item, ELMO_equivocating_validators (destination item) ⊆ s_eqvs) tr → valid_state_prop ELMOProtocol (state_update ELMO_component s i si) ∧ ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hsisi: valid_state_prop ELMOProtocol (state_update ELMO_component s i si)
Heqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ s_eqvs ∪ {[idx i]}
Hs: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} s
Hsf: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} sf
n: j ≠ i
Ht_pre: input_valid_transition {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (existT j lj) (s, iom) ( sf, oom)
Ht': (let (si', om') := UMO_component_transition lj (s j) iom in (state_update ELMO_component (state_update ELMO_component s i si) j si', om')) = (state_update ELMO_component sf i si, oom)
Htr_min_pre: finite_valid_trace_init_to {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} si0 s tr
Hsisi_pre: valid_state_prop {| vlsm_type := composite_type ELMO_component; vlsm_machine := preloaded_vlsm_machine FreeELMO (λ _ : Message, True) |} (state_update ELMO_component s i si)
H2: finite_valid_trace_init_to ReachELMO si0 sf (tr ++ [{| l := existT j lj; input := iom; destination := sf; output := oom |}])
Hpre_tisi: input_valid_transition ReachELMO (existT j lj) (state_update ELMO_component s i si, iom) (state_update ELMO_component sf i si, oom)
Hpre_sfisi: valid_state_prop ReachELMO (state_update ELMO_component sf i si)
v: Message_validator idx
ges_m: Message
ges_adr: adr (state ges_m) = `v
k: index
Hrcv: ges_m ∈ receivedMessages (sf k)
i_a: index
Ha: `v = idx i_a
H3: k ≠ i
n0: i_a ≠ i
ges_not_sent: has_been_sent (ELMO_component (Message_sender_index idx v)) (sf (Message_sender_index idx v)) ges_mhas_been_sent (ELMO_component i_a) (sf i_a) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : VLSM.state ELMOProtocol, valid_state_prop ELMOProtocol s → ∀ (i : index) (l : Label) (s' : VLSM.state ELMOProtocol) (m : Message), ELMOProtocol_valid_transition i l s s' m → valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ s : VLSM.state ELMOProtocol, valid_state_prop ELMOProtocol s → ∀ (i : index) (l : Label) (s' : VLSM.state ELMOProtocol) (m : Message), ELMOProtocol_valid_transition i l s s' m → valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
l: Label
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i l s s' mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Send s s' m
Hsend: valid_transition ELMOProtocol (existT i Send) s None s' (Some m)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hreceive: valid_transition ELMOProtocol (existT i Receive) s (Some m) s' Nonevalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Send s s' m
Hsend: valid_transition ELMOProtocol (existT i Send) s None s' (Some m)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Send s s' m
Hsend: valid_transition ELMOProtocol (existT i Send) s None s' (Some m)can_emit ELMOProtocol mby repeat split; [| apply option_valid_message_None | apply Hsend..].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Send s s' m
Hsend: valid_transition ELMOProtocol (existT i Send) s None s' (Some m)input_valid_transition ELMOProtocol (existT i Send) (s, None) (s', Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hreceive: valid_transition ELMOProtocol (existT i Receive) s (Some m) s' Nonevalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hreceive: valid_transition ELMOProtocol (existT i Receive) s (Some m) s' None
Hincl: VLSM_incl ELMOProtocol ReachELMOvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hreceive: valid_transition ELMOProtocol (existT i Receive) s (Some m) s' None
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'global_equivocators_simple s' (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'global_equivocators_simple s' (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) mcomposite_has_been_received ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m)) mby exists i; cbn; state_update_simpl; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) mcomposite_has_been_received ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m)) mby destruct (decide (i_m = i)); subst; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
i_m: index
Hsnd: has_been_sent (ELMO_component i_m) (state_update ELMO_component s i (s i <+> MkObservation Receive m) i_m) mhas_been_sent (ELMO_component i_m) (s i_m) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s avalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
a: Addressglobal_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ↔ a = adr (state m) ∨ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
a: AddressELMO_component_RAM_transition i Receive (s i) (s i <+> MkObservation Receive m) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
a: Addressvalid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (s i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
a: Addressoption_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m)by eapply valid_state_project_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
a: Addressvalid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (s i)by apply any_message_is_valid_in_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
a: Addressoption_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s avalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} svalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} scomposite_constrained_state_prop ELMO_component s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} scomposite_constrained_state_prop ELMO_component s'by exists (existT i Receive), (s, Some m), None; repeat split; [| apply any_message_is_valid_in_preloaded | ..].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s∃ (l : VLSM.label (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component))) (som : VLSM.state (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) * option Message) (om' : option Message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) l som (s', om')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
Hsender: MessageHasSender mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m(sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%Rvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m(sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m(sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= equivocation_fault (state_update ELMO_component s i (s i <+> MkObservation Receive m)))%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_mELMO_equivocating_validators s ∪ {[idx i_m]} ⊆ equivocating_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Addressa ∈ ELMO_equivocating_validators s ∨ a = idx i_m → a ∈ equivocating_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Addressa ∈ filter (λ v : Address, is_equivocating s v) (state_validators s) ∨ a = idx i_m → a ∈ filter (λ v : Address, is_equivocating (state_update ELMO_component s i (s i <+> MkObservation Receive m)) v) (state_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Addressis_equivocating s a ∧ a ∈ state_validators s ∨ a = idx i_m → is_equivocating (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ∧ a ∈ state_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Address
e: a = adr (state m)is_equivocating s a ∧ a ∈ state_validators s ∨ a = idx i_m → is_equivocating (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ∧ a ∈ state_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Address
n: a ≠ adr (state m)is_equivocating s a ∧ a ∈ state_validators s ∨ a = idx i_m → is_equivocating (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ∧ a ∈ state_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Address
e: a = adr (state m)is_equivocating s a ∧ a ∈ state_validators s ∨ a = idx i_m → is_equivocating (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ∧ a ∈ state_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hs'_eqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m))
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
H2: is_equivocating s (adr (state m)) ∧ adr (state m) ∈ state_validators s ∨ adr (state m) = idx i_mELMO_global_equivocators (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hs'_eqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m))
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
H2: is_equivocating s (adr (state m)) ∧ adr (state m) ∈ state_validators s ∨ adr (state m) = idx i_madr (state m) ∈ list_to_set (map idx (enum index))by apply ELMO_global_equivocators_iff_simple.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hs'_eqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m))
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
H2: is_equivocating s (adr (state m)) ∧ adr (state m) ∈ state_validators s ∨ adr (state m) = idx i_mELMO_global_equivocators (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))by apply elem_of_list_to_set, elem_of_list_fmap; eexists; split; [| apply elem_of_enum].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hs'_eqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m))
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
H2: is_equivocating s (adr (state m)) ∧ adr (state m) ∈ state_validators s ∨ adr (state m) = idx i_madr (state m) ∈ list_to_set (map idx (enum index))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Address
n: a ≠ adr (state m)is_equivocating s a ∧ a ∈ state_validators s ∨ a = idx i_m → is_equivocating (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ∧ a ∈ state_validators (state_update ELMO_component s i (s i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Address
n: a ≠ adr (state m)
H2: is_equivocating s a
H4: a ∈ state_validators sis_equivocating (state_update ELMO_component s i (s i <+> MkObservation Receive m)) aby right; apply ELMO_global_equivocators_iff_simple.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s (state_update ELMO_component s i (s i <+> MkObservation Receive m)) m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (state_update ELMO_component s i (s i <+> MkObservation Receive m), None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
Hs'_eqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hm_eqv: global_equivocators_simple (state_update ELMO_component s i (s i <+> MkObservation Receive m)) (adr (state m))
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s i <+> MkObservation Receive m))
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
a: Address
n: a ≠ adr (state m)
H2: is_equivocating s a
H4: a ∈ state_validators sa = adr (state m) ∨ global_equivocators_simple s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%Rvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
Hm: constrained_state_prop (ELMO_component i_m) (state m)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_mForall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_mForall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
item: transition_item
Hitem: item ∈ tr_m
dm: Message
Hobs: item_sends_or_receives dm itemdm ∈ messages (s i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
item: transition_item
Hitem: item ∈ tr_m
dm: Message
Hobs: item_sends_or_receives dm itemdm ∈ messages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
item: transition_item
Hitem: item ∈ tr_m
dm: Message
Hobs: item_sends_or_receives dm itemdm ∈ sentMessages (state m) ∨ dm ∈ receivedMessages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
item: transition_item
Hitem: item ∈ tr_m
dm: Message
Hobs: item_sends_or_receives dm itemhas_been_directly_observed (ELMO_component i_m) (state m) dmby apply Exists_exists; eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
item: transition_item
Hitem: item ∈ tr_m
dm: Message
Hobs: item_sends_or_receives dm itemtrace_has_message item_sends_or_receives dm tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_mForall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_mForall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m∀ x : transition_item, (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) x → ∀ m : Message, input x = Some m ∨ output x = Some m → valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
item: transition_item
Hobs: (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) item
dm: Message
Hdm: input item = Some dm ∨ output item = Some dmvalid_message_prop ELMOProtocol dmby apply Hobs, elem_of_messages in Hdm as []; [left | right]; eexists i.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
item: transition_item
Hobs: (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) item
dm: Message
Hdm: input item = Some dm ∨ output item = Some dmhas_been_directly_observed ELMOProtocol s dmAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_reachable: Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (VLSM_weak_embedding_finite_trace_project (lift_to_preloaded_free_weak_embedding ELMO_component i_m s Hs_pre) tr_m)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (state_update ELMO_component s i_m is_m) (state_update ELMO_component s i_m (state m)) (VLSM_weak_embedding_finite_trace_project (lift_to_preloaded_free_weak_embedding ELMO_component i_m s Hs_pre) tr_m)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (state_update ELMO_component s i_m is_m) (state_update ELMO_component s i_m (state m)) (VLSM_weak_embedding_finite_trace_project (lift_to_preloaded_free_weak_embedding ELMO_component i_m s Hs_pre) tr_m)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))
d: VLSM.state (ELMO_component i_m)
Hd: d ∈ is_m :: map destination tr_mcomposite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m d)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (state_update ELMO_component s i_m is_m) (state_update ELMO_component s i_m (state m)) (VLSM_weak_embedding_finite_trace_project (lift_to_preloaded_free_weak_embedding ELMO_component i_m s Hs_pre) tr_m)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))
d: VLSM.state (ELMO_component i_m)
Hd: d ∈ map destination tr_mcomposite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m d)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (state_update ELMO_component s i_m is_m) (state_update ELMO_component s i_m (state m)) (VLSM_weak_embedding_finite_trace_project (lift_to_preloaded_free_weak_embedding ELMO_component i_m s Hs_pre) tr_m)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))
item: transition_item
Hitem: item ∈ tr_mcomposite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (destination item))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
item: transition_item
pre, suf: list transition_item
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) (pre ++ item :: suf)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) (pre ++ item :: suf)
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (state_update ELMO_component s i_m is_m) (state_update ELMO_component s i_m (state m)) (VLSM_weak_embedding_finite_trace_project (lift_to_preloaded_free_weak_embedding ELMO_component i_m s Hs_pre) (pre ++ item :: suf))
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (destination item))by eapply elem_of_trace_in_futures_left, in_futures_valid_fst in Htr_m; [| by apply elem_of_app; right; left].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
item: transition_item
pre, suf: list transition_item
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) (pre ++ item :: suf)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) (pre ++ item :: suf)
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (state_update ELMO_component s i_m is_m) (state_update ELMO_component s i_m (state m)) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (λ sj : BaseELMO.State, state_update ELMO_component s i_m sj)) pre ++ pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (λ sj : BaseELMO.State, state_update ELMO_component s i_m sj) item :: map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (λ sj : BaseELMO.State, state_update ELMO_component s i_m sj)) suf)
Heqis_m: is_m = MkState [] (idx i_m)
Hsimis_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} (state_update ELMO_component s i_m (MkState [] (idx i_m)))composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (destination item))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_reachable: Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m is_m)
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m is_m) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_reachable: Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
state_m: BaseELMO.State
Heqstate_m: state_m = state m
Hrcv: ELMO_recv_valid (s i) (MkMessage state_m)
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr state_m)
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr state_m ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m is_m)
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m is_m) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m state_m tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_reachable: Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
state_m: BaseELMO.State
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m is_m) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m state_m tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_reachable: Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (is_m :: map destination tr_m)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
Hall_reachable: Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]))
IHHtr_m: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]} → Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr → Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr) → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr ++ [sf])
IHHtr_m: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]} → Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr → Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr) → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) ((si :: map destination tr) ++ [sf])
IHHtr_m: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]} → Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr → Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr) → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) [sf]
IHHtr_m: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]} → Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr → Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr) → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]} → Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr → Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr) → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) [{| l := l; input := iom; destination := sf; output := oom |}]
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]} → Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr → Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr) → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]} → Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr → Forall (λ item : VLSM.state (ELMO_component i_m), composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr) → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trForall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trcomposite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trcomposite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr: list transition_item
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l (finite_trace_last si tr, iom) ( sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trcomposite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (finite_trace_last si tr))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr: list transition_item
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l (finite_trace_last si tr, iom) ( sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: ∀ x : BaseELMO.State, x ∈ si :: map destination tr → composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m x)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trcomposite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (finite_trace_last si tr))by rewrite <- StdppExtras.last_last_error, unlock_finite_trace_last.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr: list transition_item
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l (finite_trace_last si tr, iom) ( sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: ∀ x : BaseELMO.State, x ∈ si :: map destination tr → composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m x)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) trlast (si :: map destination tr) = Some (finite_trace_last si tr)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hall_reachable: Forall (λ item : BaseELMO.State, composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m item)) (si :: map destination tr)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) [{| l := l; input := iom; destination := sf; output := oom |}]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr: list transition_item
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l (finite_trace_last si tr, iom) ( sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (finite_trace_last si tr))ELMO_equivocating_validators (state_update ELMO_component s i_m (finite_trace_last si tr)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr: list transition_item
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr': list transition_item
lst: transition_item
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l (finite_trace_last si (tr' ++ [lst]), iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr' ++ [lst])
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (finite_trace_last si (tr' ++ [lst])))
Heq: tr = tr' ++ [lst]ELMO_equivocating_validators (state_update ELMO_component s i_m (finite_trace_last si (tr' ++ [lst]))) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr: list transition_item
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr': list transition_item
lst: transition_item
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l (finite_trace_last si (tr' ++ [lst]), iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) (tr' ++ [lst])
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (finite_trace_last si (tr' ++ [lst])))
Heq: tr = tr' ++ [lst]ELMO_equivocating_validators (state_update ELMO_component s i_m (destination lst)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}by apply elem_of_app; right; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
tr: list transition_item
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr': list transition_item
lst: transition_item
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l (finite_trace_last si (tr' ++ [lst]), iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: ∀ x : transition_item, x ∈ tr' ++ [lst] → ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination x)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (finite_trace_last si (tr' ++ [lst])))
Heq: tr = tr' ++ [lst]lst ∈ tr' ++ [lst]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) (sf, oom)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → m ∈ messages (s i)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m sf)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m sf) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Send (MkMessage s0)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Send ( s0, None) (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Send; input := None; destination := s0 <+> MkObservation Send (MkMessage s0); output := Some (MkMessage s0) |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Send (s0, None)
H_t: transition Send (s0, None) = (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Send (MkMessage s0))) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Send (MkMessage s0)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Send ( s0, None) (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Send; input := None; destination := s0 <+> MkObservation Send (MkMessage s0); output := Some (MkMessage s0) |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Send (s0, None)
H_t: transition Send (s0, None) = (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Send (MkMessage s0))) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Send (MkMessage s0)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Send ( s0, None) (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Send; input := None; destination := s0 <+> MkObservation Send (MkMessage s0); output := Some (MkMessage s0) |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Send (s0, None)
H_t: transition Send (s0, None) = (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Send (MkMessage s0))) ⊆ ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Send (MkMessage s0)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Send ( s0, None) (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Send; input := None; destination := s0 <+> MkObservation Send (MkMessage s0); output := Some (MkMessage s0) |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Send (s0, None)
H_t: transition Send (s0, None) = (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]} ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}by eapply union_subseteq_l', ELMO_equivocating_validators_step_update_Send; [| by constructor; state_update_simpl].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Send (MkMessage s0)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Send ( s0, None) (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Send; input := None; destination := s0 <+> MkObservation Send (MkMessage s0); output := Some (MkMessage s0) |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Send (s0, None)
H_t: transition Send (s0, None) = (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Send (MkMessage s0))) ⊆ ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]}by apply union_subseteq; split; [| apply union_subseteq_r'].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Send (MkMessage s0)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Send ( s0, None) (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Send; input := None; destination := s0 <+> MkObservation Send (MkMessage s0); output := Some (MkMessage s0) |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Send (s0, None)
H_t: transition Send (s0, None) = (s0 <+> MkObservation Send (MkMessage s0), Some (MkMessage s0))ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]} ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hmm0: adr (state m) = adr (state m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hmm0: adr (state m) = adr (state m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hmm0: adr (state m) = adr (state m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hmm0: adr (state m) = adr (state m0)ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]} ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hmm0: adr (state m) = adr (state m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]}by eapply ELMO_equivocating_validators_step_update_Receive; [| constructor; state_update_simpl].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hmm0: adr (state m) = adr (state m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m0)]}by apply union_subseteq; split; [| apply union_subseteq_r'].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hmm0: adr (state m) = adr (state m0)ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]} ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)ELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
n: i_m ≠ iELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
e: i_m = iELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
n: i_m ≠ iELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
n: i_m ≠ iELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
n: i_m ≠ icomposite_has_been_directly_observed ELMO_component (state_update ELMO_component s i_m s0) m0by apply elem_of_messages in Hm0_obs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (state_update ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
n: i_m ≠ ihas_been_directly_observed (ELMO_component i) (s i) m0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
i_m: index
Hsender: adr (state m) = idx i_m
si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
m0: Message
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m (s0 <+> MkObservation Receive m0))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i_m s0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
H_v: valid Receive (s0, Some m0)
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
ELMO_mv_full_node0: full_node s0 m0
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
e: i_m = iELMO_equivocating_validators (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m (s0 <+> MkObservation Receive m0)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Addressis_equivocating (state_update ELMO_component (state_update ELMO_component s i s0) i (s0 <+> MkObservation Receive m0)) a ∧ a ∈ state_validators (state_update ELMO_component (state_update ELMO_component s i s0) i (s0 <+> MkObservation Receive m0)) → a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: AddressELMO_global_equivocators (state_update ELMO_component (state_update ELMO_component s i s0) i (s0 <+> MkObservation Receive m0)) a ∧ a ∈ list_to_set (map idx (enum index)) → a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Addressglobal_equivocators_simple (state_update ELMO_component (state_update ELMO_component s i s0) i (s0 <+> MkObservation Receive m0)) a ∧ a ∈ list_to_set (map idx (enum index)) → a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
Heqv: global_equivocators_simple (state_update ELMO_component (state_update ELMO_component s i s0) i (s0 <+> MkObservation Receive m0)) a
H1: a ∈ list_to_set (map idx (enum index))a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0m0 ∉ sentMessages (s i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0m0 ∉ sentMessages (s i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0: adr (state m0) = adr (s i)FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: idx i ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0: adr (state m0) = adr (s i)Falseby apply ELMO_reachable_adr, valid_state_project_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[idx i]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0: adr (state m0) = adr (s i)adr (s i) = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)adr (state m0) ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a
Hm0_not_sent: m0 ∉ sentMessages (s i)a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)adr (state m0) ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)adr (state m0) ∈ filter (λ v : Address, ELMO_global_equivocators s v) (list_to_set (map idx (enum index))) ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)global_equivocators_simple s (adr (state m0)) ∧ adr (state m0) ∈ list_to_set (map idx (enum index)) ∨ adr (state m0) = adr (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)global_equivocators_simple s (adr (state m0))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)¬ composite_has_been_sent ELMO_component s m0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)
i_m0: index
Hsent: has_been_sent (ELMO_component i_m0) (s i_m0) m0Falseby apply Hnsent; exists i_m0; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
H1: adr (state m0) ∈ list_to_set (map idx (enum index))
Hnsent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component s i s0) m0
Hm0_not_sent: m0 ∉ sentMessages (s i)
i_m0: index
Hsent: has_been_sent (ELMO_component i_m0) (s i_m0) m0
H2: i ≠ i_m0FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a
Hm0_not_sent: m0 ∉ sentMessages (s i)a ∈ ELMO_equivocating_validators s ∪ {[adr (state m)]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a
Hm0_not_sent: m0 ∉ sentMessages (s i)a ∈ ELMO_equivocating_validators (state_update ELMO_component s i s0)by rewrite elem_of_filter, ELMO_global_equivocators_iff_simple.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
m: Message
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
tr: list transition_item
s0, si: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i)) si s0 tr
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i si) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsender: adr (state m) = idx i
m0: Message
ELMO_mv_no_self_equiv0: no_self_equiv s0 m0
ELMO_mv_full_node0: full_node s0 m0
H_t: transition Receive (s0, Some m0) = (s0 <+> MkObservation Receive m0, None)
H_v: valid Receive (s0, Some m0)
Hsis0_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i s0) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}
Hsis0_pre: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i s0)
IHHtr_m: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[adr (state m)]}) tr
Hlast_obs: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := Some m0; destination := s0 <+> MkObservation Receive m0; output := None |} → m ∈ messages (s i)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( s0, Some m0) (s0 <+> MkObservation Receive m0, None)
Hsf_reachable: composite_constrained_state_prop ELMO_component (state_update ELMO_component s i (s0 <+> MkObservation Receive m0))
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s0 <+> MkObservation Receive m0)
Hnmm0: adr (state m) ≠ adr (state m0)
Hm0_obs: m0 ∈ messages (s i)
a: Address
H1: a ∈ list_to_set (map idx (enum index))
Heqv: global_equivocators_simple (state_update ELMO_component s i s0) a
Hm0_not_sent: m0 ∉ sentMessages (s i)a ∈ filter (λ v : Address, ELMO_global_equivocators (state_update ELMO_component s i s0) v) (list_to_set (map idx (enum index)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_mvalid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_mfinite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_mfinite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
sm: BaseELMO.State
Heqsm: sm = state m
Hrcv: ELMO_recv_valid (s i) (MkMessage sm)
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr sm)
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr sm ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr sm = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m sm tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_mfinite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m sm) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
sm: BaseELMO.State
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m sm tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_mfinite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m sm) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) ( sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) ( sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) [{| l := l; input := iom; destination := sf; output := oom |}]
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) ( sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) [{| l := l; input := iom; destination := sf; output := oom |}]
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) [{| l := l; input := iom; destination := sf; output := oom |}]
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) ( sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) [{| l := l; input := iom; destination := sf; output := oom |}]
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) ( sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}]))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) ( sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m sf) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m)) tr ++ [pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) {| l := l; input := iom; destination := sf; output := oom |}])Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht0: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s0, iom) ( sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)input_valid_transition ELMOProtocol (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom) (lift_to_composite_state ELMO_component s i_m sf, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)input_valid_transition ELMOProtocol (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom) (lift_to_composite_state ELMO_component s i_m sf, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component s i_m s0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)option_valid_message_prop ELMOProtocol iomAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)valid (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)ELMO_global_constraint (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)transition (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom) = (lift_to_composite_state ELMO_component s i_m sf, oom)by eapply finite_valid_trace_from_to_last_pstate, IHHtr_m.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component s i_m s0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)option_valid_message_prop ELMOProtocol iomby apply H_lst_msg_valid; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
m0: Message
oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, Some m0)
Ht0: transition l (s0, Some m0) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := Some m0; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := Some m0; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)option_valid_message_prop ELMOProtocol (Some m0)by cbn; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)valid (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)ELMO_global_constraint (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid Receive (s0, iom)
Ht0: transition Receive (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := Receive; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)ELMO_global_constraint (lift_to_composite_label ELMO_component i_m Receive) (lift_to_composite_state ELMO_component s i_m s0, iom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid Receive (s0, iom)
Ht0: transition Receive (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := Receive; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)let (s', _) := let (si', om') := transition Receive (lift_to_composite_state ELMO_component s i_m s0 i_m, iom) in (state_update ELMO_component (lift_to_composite_state ELMO_component s i_m s0) i_m si', om') in ELMO_not_heavy s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid Receive (s0, iom)
Ht0: transition Receive (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := Receive; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)let (s', _) := let (si', om') := transition Receive (s0, iom) in (state_update ELMO_component (lift_to_composite_state ELMO_component s i_m s0) i_m si', om') in ELMO_not_heavy s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid Receive (s0, iom)
Ht0: match iom with | Some m => (s0 <+> MkObservation Receive m, None) | None => (s0, None) end = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := Receive; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)ELMO_not_heavy (state_update ELMO_component s i_m sf)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid Receive (s0, iom)
Ht0: match iom with | Some m => (s0 <+> MkObservation Receive m, None) | None => (s0, None) end = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := Receive; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)(equivocation_fault (state_update ELMO_component s i_m sf) <= threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid Receive (s0, iom)
Ht0: match iom with | Some m => (s0 <+> MkObservation Receive m, None) | None => (s0, None) end = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := Receive; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)(equivocation_fault (state_update ELMO_component s i_m sf) <= sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}))%Rby intro; apply Hsf_bounded_eqv.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid Receive (s0, iom)
Ht0: match iom with | Some m => (s0 <+> MkObservation Receive m, None) | None => (s0, None) end = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := Receive; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := Receive; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)equivocating_validators (state_update ELMO_component s i_m sf) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m si) (lift_to_composite_state ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr)transition (lift_to_composite_label ELMO_component i_m l) (lift_to_composite_state ELMO_component s i_m s0, iom) = (lift_to_composite_state ELMO_component s i_m sf, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (state_update ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (state_update ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (state_update ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (state_update ELMO_component s i_m si) (state_update ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (λ sj : VLSM.state (ELMO_component i_m), state_update ELMO_component s i_m sj) tr)(let (si', om') := UMO_component_transition l s0 iom in (state_update ELMO_component (state_update ELMO_component s i_m s0) i_m si', om')) = (state_update ELMO_component s i_m sf, oom)by rewrite state_update_twice.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
si, s0: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) si s0 tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Hs0: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i_m)) s0
Hv0: valid l (s0, iom)
Ht0: transition l (s0, iom) = (sf, oom)
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr
H_lst_msg_valid: ∀ m : Message, item_sends_or_receives m {| l := l; input := iom; destination := sf; output := oom |} → valid_message_prop ELMOProtocol m
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (state_update ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr
Hsf_bounded_eqv: ELMO_equivocating_validators (state_update ELMO_component s i_m (destination {| l := l; input := iom; destination := sf; output := oom |})) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
IHHtr_m: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr → Forall (λ item : transition_item, ELMO_equivocating_validators (state_update ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr → finite_valid_trace_from_to ELMOProtocol (state_update ELMO_component s i_m si) (state_update ELMO_component s i_m s0) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (λ sj : VLSM.state (ELMO_component i_m), state_update ELMO_component s i_m sj) tr)(state_update ELMO_component (state_update ELMO_component s i_m s0) i_m sf, oom) = (state_update ELMO_component s i_m sf, oom)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)valid_message_prop ELMOProtocol mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)input_valid_transition ELMOProtocol (existT i_m Send) (lift_to_composite_state ELMO_component s i_m (state m), None) (lift_to_composite_state ELMO_component s i_m (state m <+> MkObservation Send m), Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component s i_m (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)option_valid_message_prop ELMOProtocol NoneAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)valid (existT i_m Send) (lift_to_composite_state ELMO_component s i_m (state m), None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) ( s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)transition (existT i_m Send) (lift_to_composite_state ELMO_component s i_m (state m), None) = (lift_to_composite_state ELMO_component s i_m (state m <+> MkObservation Send m), Some m)by apply finite_valid_trace_from_to_last_pstate in Htr_m_lift.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component s i_m (state m))by apply option_valid_message_None.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)option_valid_message_prop ELMOProtocol Noneby constructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)valid (existT i_m Send) (lift_to_composite_state ELMO_component s i_m (state m), None)by cbn; state_update_simpl; rewrite state_update_twice; destruct m. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
s: VLSM.state ELMOProtocol
Hs: valid_state_prop ELMOProtocol s
i: index
s': VLSM.state ELMOProtocol
m: Message
Hvalid: ELMOProtocol_valid_transition i Receive s s' m
Hv: valid (existT i Receive) (s, Some m)
Hc: ELMO_global_constraint (existT i Receive) (s, Some m)
Ht: transition (existT i Receive) (s, Some m) = (s', None)
Hincl: VLSM_incl ELMOProtocol ReachELMO
Hnsnd: ¬ composite_has_been_sent ELMO_component s m
Hrcv: ELMO_recv_valid (s i) (MkMessage (state m))
H3: state_update ELMO_component s i (s i <+> MkObservation Receive m) = s'
Hm_eqv: global_equivocators_simple s' (adr (state m))
Hs'_eqv: ∀ a : Address, global_equivocators_simple s' a ↔ a = adr (state m) ∨ global_equivocators_simple s a
Hs_pre: valid_state_prop {| vlsm_type := ELMOProtocol; vlsm_machine := ReachELMO |} s
Hs': composite_constrained_state_prop ELMO_component s'
ELMO_mv_full_node0: full_node (s i) m
ELMO_mv_no_self_equiv0: no_self_equiv (s i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (s i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Heqv: (sum_weights (ELMO_equivocating_validators s ∪ {[idx i_m]}) <= threshold)%R
His: initial_state_prop (MkState [] (idx i_m))
Hsimis: valid_state_prop ELMOProtocol (state_update ELMO_component s i_m (MkState [] (idx i_m)))
Hsimis_eqvs: ELMO_equivocating_validators (state_update ELMO_component s i_m (MkState [] (idx i_m))) ⊆ ELMO_equivocating_validators s ∪ {[idx i_m]}
Hsi_pre: constrained_state_prop (ELMO_component i) (s i)
is_m: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr_m: list transition_item
Htr_m: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is_m (state m) tr_m
Hall_messages_observed: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → m ∈ messages (s i)) tr_m
Hall_messages_valid: Forall (λ item : transition_item, ∀ m : Message, item_sends_or_receives m item → valid_message_prop ELMOProtocol m) tr_m
Heqis_m: is_m = MkState [] (idx i_m)
Hall_bounded_eqv: Forall (λ item : transition_item, ELMO_equivocating_validators (lift_to_composite_state ELMO_component s i_m (destination item)) ⊆ ELMO_equivocating_validators s ∪ {[ idx i_m]}) tr_m
Htr_m_lift: finite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component s i_m is_m) (lift_to_composite_state ELMO_component s i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component s i_m) tr_m)transition (existT i_m Send) (lift_to_composite_state ELMO_component s i_m (state m), None) = (lift_to_composite_state ELMO_component s i_m (state m <+> MkObservation Send m), Some m)
Let si be a reachable state in (ELMO_component i) and
m a message such that
ELMO_component_valid Receive si (Some m) in (ELMO_component i),
adr m <> i and adr m ∉ local_equivocators_full si, and
also there is no message m' ∈ received_messages(si) with m' ⊥ m.
Suppose σ is a valid state in ELMOProtocol such that σ i = si,
having messages(si) = messages(σ),
local_equivocators_full(si) = global_equivocators(σ),
and components of σ other than i may only have a
Send observation as their latest observation,
and also m ∉ sent_messages(σ).
Then there exists a state σ' in the future of σ such that
σ' i = si, messages(σ') = messages(si), and
global_equivocators(σ') = global_equivocators(σ),
components of σ' other than i and adr(m) may only
have a Send observation as their latest observation.
Finally, σ'(adr(m)) = m
(So m can be emitted immediately from σ').
This is stronger than the previous message by showing,
at least in these conditions, that a message that
can be validly received by a component in a valid
ELMOProtocol state can be validly emitted not just
in some unrelated ELMOProtocol trace, but also
in a trace continuing from the current state.
(We will build from this towards proving ELMO_components
are validating for ELMOProtocol by showing how to
construct such an ELMOProtocol state embedding
given an ELMO_component state and receivable message)
Definition latest_observation_Send (s : State) : Prop := obs s = [] \/ exists (s' : State) (m : Message), s = s' <+> MkObservation Send m. Definition component_reflects_composite_messages (s : VLSM.state ELMOProtocol) (i : index) : Prop := forall m : Message, (exists j, m ∈ messages (s j)) <-> m ∈ messages (s i). Definition component_reflects_composite_equivocators (s : VLSM.state ELMOProtocol) (i : index) : Prop := forall a : Address, global_equivocators_simple s a <-> local_equivocators_full (s i) a. Record component_reflects_composite (s : VLSM.state ELMOProtocol) (i : index) : Prop := { component_sees_messages : component_reflects_composite_messages s i; component_sees_equivocators : component_reflects_composite_equivocators s i; }. Definition other_components_after_send (P_allowed : index -> Prop) (s : VLSM.state ELMOProtocol) : Prop := forall i : index, ~ P_allowed i -> latest_observation_Send (s i).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma∃ tr_m : list transition_item, finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma∃ tr_m : list transition_item, finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si∃ tr_m : list transition_item, finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)mj ∈ receivedMessages siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)
Hmj_adr: adr (state mj) = idx jmj ∈ receivedMessages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)
Hmj_adr: adr (state mj) = idx jmj ∈ messages (sigma i) → mj ∈ receivedMessages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)
Hmj_adr: adr (state mj) = idx jmj ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)
Hmj_adr: adr (state mj) = idx jmj ∈ messages (sigma i) → mj ∈ receivedMessages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)
Hmj_adr: adr (state mj) = idx j
Hmji: mj ∈ sentMessages (sigma i)mj ∈ receivedMessages (sigma i)by contradict Hni; eapply inj with idx; [done | congruence].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)
Hmj_adr: adr (state mj) = idx j
Hmji: adr (state mj) = idx imj ∈ receivedMessages (sigma i)by apply Hspecial; exists j; apply elem_of_messages; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
j: index
Hni: j ≠ i
mj: BaseELMO.Message
Hmj: mj ∈ sentMessages (sigma j)
Hmj_adr: adr (state mj) = idx jmj ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si∃ tr_m : list transition_item, finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m∃ tr_m : list transition_item, finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)∃ tr_m : list transition_item, finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m∃ tr_m : list transition_item, finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_mconstrained_state_prop (ELMO_component i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_msigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_mconstrained_state_prop (ELMO_component i_m) (state m)by clear Hsi_m; destruct m; eapply receivable_messages_reachable.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
H5: ELMO_recv_valid (sigma i) mconstrained_state_prop (ELMO_component i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_msigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
Hinit: obs (sigma i_m) = []sigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
sim: State
lst_im: Message
Hsnd: sigma i_m = sim <+> MkObservation Send lst_imsigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
Hinit: obs (sigma i_m) = []sigma i_m = state m ∨ state_suffix (sigma i_m) (state m)by apply eq_State; [| cbn; congruence].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
Hinit: obs (sigma i_m) = []MkState [] (adr (state m)) = sigma i_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
sim: State
lst_im: Message
Hsnd: sigma i_m = sim <+> MkObservation Send lst_imsigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
sim: State
lst_im: Message
Hsnd: sigma i_m = sim <+> MkObservation Send lst_im
Hsim: sim = state lst_imsigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_imsigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_imsent_comparable m lst_imAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_imsigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_imsent_comparable m lst_imAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_imsent_comparable m lst_imAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_imlocal_equivocators_full si' (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_imlocal_equivocators_full si (adr (state m)) ∨ adr (state m) = adr (state m) ∧ Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages si ∧ incomparable m m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_im∃ m' : BaseELMO.Message, m' ∈ receivedMessages si ∧ incomparable m m'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_imlst_im ∈ receivedMessages siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_imadr (state m) = adr (state lst_im)by eapply Hsigma_no_junk with (j := i_m); [| rewrite Hsnd; left].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_imlst_im ∈ receivedMessages siby transitivity (adr (sigma i_m)); [congruence | rewrite Hsnd].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
n: ¬ sent_comparable m lst_imadr (state m) = adr (state lst_im)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
sigma: composite_state ELMO_component
Hcomponent: sigma i = si
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages si
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_imsigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
sigma: composite_state ELMO_component
lst_im: Message
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state lst_im))
Ht: input_constrained_transition (ELMO_component i) Receive (sigma i, Some lst_im) ( si', None)
i_m: index
Hadr_neq: adr (state lst_im) ≠ idx i
Hi_m: adr (state lst_im) = idx i_m
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma lst_im
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable lst_im lst_imsigma i_m = state lst_im ∨ state_suffix (sigma i_m) (state lst_im)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)sigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
Hbefore: was_sent_before lst_im msigma i_m = state m ∨ state_suffix (sigma i_m) (state m)by contradict Hm_not_sent_yet; exists i_m; rewrite Hsnd; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
sigma: composite_state ELMO_component
lst_im: Message
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state lst_im))
Ht: input_constrained_transition (ELMO_component i) Receive (sigma i, Some lst_im) ( si', None)
i_m: index
Hadr_neq: adr (state lst_im) ≠ idx i
Hi_m: adr (state lst_im) = idx i_m
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma lst_im
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable lst_im lst_imsigma i_m = state lst_im ∨ state_suffix (sigma i_m) (state lst_im)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)sigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)m ∈ sentMessages (sigma i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)m ∈ messages (sigma i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)UMO_reachable full_node (sigma i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)lst_im ∈ messages (sigma i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)m <hb lst_imby eapply ELMO_full_node_reachable, valid_state_project_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)UMO_reachable full_node (sigma i_m)by rewrite Hsnd; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)lst_im ∈ messages (sigma i_m)by constructor 1; apply elem_of_messages; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
H4: adr (state m) = adr (state lst_im)
H5: m ∈ sentMessages (state lst_im)m <hb lst_imAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
Hbefore: was_sent_before lst_im msigma i_m = state m ∨ state_suffix (sigma i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
Hbefore: was_sent_before lst_im m
H4: ∀ (P : BaseELMO.State → BaseELMO.Message → Prop) (m1 m2 : BaseELMO.Message), UMO_reachable P (state m2) → was_sent_before m1 m2 → let s := state m1 <+> MkObservation Send m1 in state_suffix s (state m2) ∨ s = state m2UMO_reachable ?P (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
Hbefore: was_sent_before lst_im m
H4: ∀ (P : BaseELMO.State → BaseELMO.Message → Prop) (m1 m2 : BaseELMO.Message), UMO_reachable P (state m2) → was_sent_before m1 m2 → let s := state m1 <+> MkObservation Send m1 in state_suffix s (state m2) ∨ s = state m2constrained_state_prop (ELMO_component i_m) (state m)by clear Hsi_m; destruct m; eapply receivable_messages_reachable; [congruence | ..]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
Hv: valid Receive (sigma i, Some m)
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: valid_state_prop ELMOProtocol sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hsigma_no_junk: ∀ j : index, j ≠ i → ∀ mj : BaseELMO.Message, mj ∈ sentMessages (sigma j) → mj ∈ receivedMessages (sigma i)
H2: i ≠ i_m
Hsi_m: constrained_state_prop (ELMO_component i_m) (sigma i_m)
H3: adr (sigma i_m) = idx i_m
lst_im: Message
Hsnd: sigma i_m = state lst_im <+> MkObservation Send lst_im
Hcmp: sent_comparable m lst_im
Hbefore: was_sent_before lst_im m
H4: ∀ (P : BaseELMO.State → BaseELMO.Message → Prop) (m1 m2 : BaseELMO.Message), UMO_reachable P (state m2) → was_sent_before m1 m2 → let s := state m1 <+> MkObservation Send m1 in state_suffix s (state m2) ∨ s = state m2
H6: ELMO_recv_valid (sigma i) mconstrained_state_prop (ELMO_component i_m) (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
sigma: composite_state ELMO_component
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mForall (λ item : transition_item, l item = Receive) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
sigma: composite_state ELMO_component
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mForall (λ item : transition_item, l item = Receive) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
sigma: composite_state ELMO_component
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
item: transition_item
Hitem: item ∈ tr_ml item = ReceiveAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
sigma: composite_state ELMO_component
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
item: transition_item
Hitem: item ∈ tr_m
H_item: ∃ (s : State) (m : Message), destination item = s <+> MkObservation (l item) m ∧ input_constrained_transition_item (ELMO_component i_m) s iteml item = ReceiveAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
sigma: composite_state ELMO_component
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
item: transition_item
Hitem: item ∈ tr_m
s_m0: State
m0: Message
Hs_m0: destination item = s_m0 <+> MkObservation (l item) m0
H_item: input_constrained_transition_item (ELMO_component i_m) s_m0 iteml item = ReceiveAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
m0, m_0: Message
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send m0; output := Some m_0 |} ∈ tr_m
H_item: ELMO_component_RAM_transition i_m Send s_m0 (s_m0 <+> MkObservation Send m0) m_0Send = ReceiveAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_mSend = ReceiveAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_mglobal_equivocators_simple sigma (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)global_equivocators_simple sigma (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_mglobal_equivocators_simple sigma (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_mcomposite_has_been_received ELMO_component sigma (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m¬ composite_has_been_sent ELMO_component sigma (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_mcomposite_has_been_received ELMO_component sigma (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_mhas_been_received (ELMO_component i) (sigma i) (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_mMkMessage s_m0 ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hm: MkMessage s_m0 ∈ messages (sigma i)has_been_received (ELMO_component i) (sigma i) (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_mMkMessage s_m0 ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)MkMessage s_m0 ∈ messages (sigma i)by apply elem_of_messages; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)MkMessage s_m0 ∈ messages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hm: MkMessage s_m0 ∈ messages (sigma i)has_been_received (ELMO_component i) (sigma i) (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i)has_been_received (ELMO_component i) (sigma i) (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i)constrained_state_prop (ELMO_component ?i) (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: adr (state (MkMessage s_m0)) = idx ?ihas_been_received (ELMO_component i) (sigma i) (MkMessage s_m0)by eapply composite_constrained_state_project.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i)constrained_state_prop (ELMO_component ?i) (sigma i)by congruence.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: adr (state (MkMessage s_m0)) = idx ihas_been_received (ELMO_component i) (sigma i) (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m¬ composite_has_been_sent ELMO_component sigma (MkMessage s_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
j: index
Hsnd: has_been_sent (ELMO_component j) (sigma j) (MkMessage s_m0)FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
j: index
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma j)
Hsnd_adr: adr (state (MkMessage s_m0)) = idx jFalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
j: index
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma j)
Hsnd_adr: idx i_m = idx jFalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hitem: {| l := Send; input := None; destination := s_m0 <+> MkObservation Send (MkMessage s_m0); output := Some (MkMessage s_m0) |} ∈ tr_m
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i_m)FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i_m)
Hitem: sizeState (sigma i_m) ≤ sizeState (state (MkMessage s_m0))FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i_m)
Hitem: sizeState (sigma i_m) ≤ sizeState (state (MkMessage s_m0))sizeState s_m0 < sizeState (sigma i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i_m)
Hitem: sizeState (sigma i_m) ≤ sizeState (state (MkMessage s_m0))
H2: sizeState s_m0 < sizeState (sigma i_m)FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i_m)
Hitem: sizeState (sigma i_m) ≤ sizeState (state (MkMessage s_m0))sizeState s_m0 < sizeState (sigma i_m)by apply messages_sizeState, elem_of_messages; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i_m)
Hitem: sizeState (sigma i_m) ≤ sizeState (state (MkMessage s_m0))sizeState (state (MkMessage s_m0)) < sizeState (sigma i_m)by cbn in Hitem; lia. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': BaseELMO.State
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hsigma: composite_constrained_state_prop ELMO_component sigma
Hspecial: component_reflects_composite sigma i
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
s_m0: State
Hm0: MkMessage s_m0 ∈ sentMessages (state m)
Hm0_adr: adr (state (MkMessage s_m0)) = idx i_m
Hsnd: MkMessage s_m0 ∈ sentMessages (sigma i_m)
Hitem: sizeState (sigma i_m) ≤ sizeState (state (MkMessage s_m0))
H2: sizeState s_m0 < sizeState (sigma i_m)FalseAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msgfinite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msgfinite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
tr: list transition_item
Heqtr: tr = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_mfinite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) tr ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
tr_m: list transition_item
si_m: VLSM.state (ELMO_component i_m)
Heqsi_m: si_m = sigma i_m
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) si_m (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
tr: list transition_item
Heqtr: tr = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_mfinite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) tr ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
tr_m: list transition_item
si_m: VLSM.state (ELMO_component i_m)
Heqsi_m: si_m = sigma i_m
sm: BaseELMO.State
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) si_m sm tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
tr: list transition_item
Heqtr: tr = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_mfinite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m sm) tr ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m sm) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
tr_m: list transition_item
si_m: VLSM.state (ELMO_component i_m)
sm: BaseELMO.State
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) si_m sm tr_msi_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr_m → ∀ tr : list transition_item, tr = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m sm) tr ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m sm) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s, iom) (sf, oom)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, VLSM.l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, VLSM.l item = Receive) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m sf) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
l: VLSM.label (preloaded_with_all_messages_vlsm (ELMO_component i_m))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) l ( s, iom) (sf, oom)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, VLSM.l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := l; input := iom; destination := sf; output := oom |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, VLSM.l item = Receive) tr
Hl: Forall (λ item : transition_item, VLSM.l item = Receive) [{| l := l; input := iom; destination := sf; output := oom |}]finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) (tr ++ [{| l := l; input := iom; destination := sf; output := oom |}])) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m sf) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
sf: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
iom, oom: option Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, iom) (sf, oom)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := iom; destination := sf; output := oom |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) trfinite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m sf) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) (tr ++ [{| l := Receive; input := iom; destination := sf; output := oom |}])) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m sf) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) (tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}])) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr ++ [pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) {| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}]) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr ++ [pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) {| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}]) ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma a)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0sigma i_m = sigma i_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0Forall (λ item : transition_item, l item = Receive) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma afinite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s) (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) [pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) {| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma adone.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0sigma i_m = sigma i_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msgby eapply Htr_m_inputs_in_sigma; [apply elem_of_app; left |].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
item: transition_item
msg: Message
Hitem: item ∈ tr
Hmsg: input item = Some msgcomposite_has_been_directly_observed ELMO_component sigma msgdone.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0Forall (λ item : transition_item, l item = Receive) trdone.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) trAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma afinite_valid_trace_from_to ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s) (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) [pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) {| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma afinite_valid_trace_from ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s) [pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) {| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}]Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma ainput_valid_transition ELMOProtocol (lift_to_composite_label ELMO_component i_m Receive) (lift_to_composite_state ELMO_component sigma i_m s, Some m0) (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0), None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)input_valid_transition ELMOProtocol (lift_to_composite_label ELMO_component i_m Receive) (lift_to_composite_state ELMO_component sigma i_m s, Some m0) (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0), None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)option_valid_message_prop ELMOProtocol (Some m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)ELMO_component_valid Receive (lift_to_composite_state ELMO_component sigma i_m s i_m) (Some m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)ELMO_not_heavy (state_update ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) i_m (lift_to_composite_state ELMO_component sigma i_m s i_m <+> MkObservation Receive m0))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)(state_update ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) i_m (lift_to_composite_state ELMO_component sigma i_m s i_m <+> MkObservation Receive m0), None) = (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0), None)by eapply composite_directly_observed_valid; cycle 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)option_valid_message_prop ELMOProtocol (Some m0)by constructor; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)ELMO_component_valid Receive (lift_to_composite_state ELMO_component sigma i_m s i_m) (Some m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)ELMO_not_heavy (state_update ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) i_m (lift_to_composite_state ELMO_component sigma i_m s i_m <+> MkObservation Receive m0))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
Hm0: composite_has_been_directly_observed ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) m0ELMO_not_heavy (state_update ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) i_m (lift_to_composite_state ELMO_component sigma i_m s i_m <+> MkObservation Receive m0))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
i_m0: index
Hm0: has_been_directly_observed (ELMO_component i_m0) (lift_to_composite_state ELMO_component sigma i_m s i_m0) m0ELMO_not_heavy (state_update ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) i_m (lift_to_composite_state ELMO_component sigma i_m s i_m <+> MkObservation Receive m0))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
i_m0: index
Hm0: has_been_directly_observed (ELMO_component i_m0) (lift_to_composite_state ELMO_component sigma i_m s i_m0) m0UMO_reachable full_node (lift_to_composite_state ELMO_component sigma i_m s i_m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
i_m0: index
Hm0: has_been_directly_observed (ELMO_component i_m0) (lift_to_composite_state ELMO_component sigma i_m s i_m0) m0ELMO_not_heavy (lift_to_composite_state ELMO_component sigma i_m s)by eapply ELMO_full_node_reachable, valid_state_project_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
i_m0: index
Hm0: has_been_directly_observed (ELMO_component i_m0) (lift_to_composite_state ELMO_component sigma i_m s i_m0) m0UMO_reachable full_node (lift_to_composite_state ELMO_component sigma i_m s i_m0)by apply ELMO_valid_state_not_heavy.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
i_m0: index
Hm0: has_been_directly_observed (ELMO_component i_m0) (lift_to_composite_state ELMO_component sigma i_m s i_m0) m0ELMO_not_heavy (lift_to_composite_state ELMO_component sigma i_m s)by state_update_simpl; rewrite state_update_twice.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)(state_update ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) i_m (lift_to_composite_state ELMO_component sigma i_m s i_m <+> MkObservation Receive m0), None) = (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0), None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Hm0: composite_has_been_directly_observed ELMO_component sigma m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
Hm0: composite_has_been_directly_observed ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) m0∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
Hm0: composite_has_been_directly_observed ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) m0
a: Addressglobal_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) tr0 ∧ (∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m s) (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol (lift_to_composite_state ELMO_component sigma i_m s)
Hm0: composite_has_been_directly_observed ELMO_component (lift_to_composite_state ELMO_component sigma i_m s) m0
a: Addressglobal_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m s) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
sigma_s: composite_state ELMO_component
Heqsigma_s: sigma_s = lift_to_composite_state ELMO_component sigma i_m s
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma sigma_s tr0 ∧ (∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma sigma_s (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol sigma_s
Hm0: composite_has_been_directly_observed ELMO_component sigma_s m0
a: Addressglobal_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (s <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma_s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
sigma_s: composite_state ELMO_component
Heqsigma_s: sigma_s = lift_to_composite_state ELMO_component sigma i_m s
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma sigma_s tr0 ∧ (∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma sigma_s (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol sigma_s
Hm0: composite_has_been_directly_observed ELMO_component sigma_s m0
a: Addressglobal_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (sigma_s i_m <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma_s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
sigma_s: composite_state ELMO_component
Heqsigma_s: sigma_s = lift_to_composite_state ELMO_component sigma i_m s
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma sigma_s tr0 ∧ (∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma sigma_s (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol sigma_s
Hm0: composite_has_been_directly_observed ELMO_component sigma_s m0
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma_s i_m (sigma_s i_m <+> MkObservation Receive m0)) a ↔ global_equivocators_simple sigma_s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
sigma_s: composite_state ELMO_component
Heqsigma_s: sigma_s = lift_to_composite_state ELMO_component sigma i_m s
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma sigma_s tr0 ∧ (∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma sigma_s (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol sigma_s
Hm0: composite_has_been_directly_observed ELMO_component sigma_s m0
a: Addressglobal_equivocators_simple sigma_s a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component sigma_s m0 ↔ global_equivocators_simple sigma_s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
sigma_s: composite_state ELMO_component
Heqsigma_s: sigma_s = lift_to_composite_state ELMO_component sigma i_m s
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma sigma_s tr0 ∧ (∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma sigma_s (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol sigma_s
Hm0: composite_has_been_directly_observed ELMO_component sigma_s m0
a: Addressglobal_equivocators_simple sigma_s a ∨ a = adr (state m0) ∧ ¬ composite_has_been_sent ELMO_component sigma_s m0 → global_equivocators_simple sigma_s aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
sigma_s: composite_state ELMO_component
Heqsigma_s: sigma_s = lift_to_composite_state ELMO_component sigma i_m s
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma sigma_s tr0 ∧ (∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma sigma_s (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol sigma_s
Hm0: composite_has_been_directly_observed ELMO_component sigma_s m0
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma_s m0global_equivocators_simple sigma_s (adr (state m0))by apply composite_has_been_directly_observed_sent_received_iff in Hm0 as []. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
m: Message
i_m: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr_m: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) (sigma i_m) s tr
m0: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i_m)) Receive ( s, Some m0) (s <+> MkObservation Receive m0, None)
sigma_s: composite_state ELMO_component
Heqsigma_s: sigma_s = lift_to_composite_state ELMO_component sigma i_m s
IHHtr_m: sigma i_m = sigma i_m → (∀ (item : transition_item) (msg : Message), item ∈ tr → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg) → Forall (λ item : transition_item, l item = Receive) tr → ∀ tr0 : list transition_item, tr0 = pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr → finite_valid_trace_from_to ELMOProtocol sigma sigma_s tr0 ∧ (∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr ++ [{| l := Receive; input := Some m0; destination := s <+> MkObservation Receive m0; output := None |}] → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr
Hti: transition Receive (s, Some m0) = (s <+> MkObservation Receive m0, None)
Hv: valid Receive (s, Some m0)
H2: ELMO_recv_valid s m0
Htr: finite_valid_trace_from_to ELMOProtocol sigma sigma_s (map (pre_VLSM_embedding_transition_item_project ELMO_component_type (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m)) tr)
Hall: ∀ a : Address, global_equivocators_simple sigma_s a ↔ global_equivocators_simple sigma a
Hsigma': valid_state_prop ELMOProtocol sigma_s
Hm0: composite_has_been_directly_observed ELMO_component sigma_s m0
Hnsnd: ¬ composite_has_been_sent ELMO_component sigma_s m0composite_has_been_received ELMO_component sigma_s m0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mForall (λ item : transition_item, l item = Receive) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mForall (λ item : transition_item, l item = Receive) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mcomposite_constrained_state_prop ELMO_component sigmaby apply constrained_preloaded_incl with (constraint := ELMO_global_constraint).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_mVLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm ELMO_component) ELMO_global_constraint) (preloaded_vlsm_machine (free_composite_vlsm ELMO_component) (λ _ : Message, True))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msgcomposite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)composite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)has_been_received (ELMO_component i_m) (state m) msg → composite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)has_been_received (ELMO_component i_m) (state m) msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)has_been_received (ELMO_component i_m) (state m) msg → composite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hmsg: msg ∈ receivedMessages (state m)composite_has_been_directly_observed ELMO_component sigma msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hmsg: msg ∈ receivedMessages (state m)msg ∈ sentMessages (sigma i) ∨ msg ∈ receivedMessages (sigma i)by apply elem_of_messages; right.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hmsg: msg ∈ receivedMessages (state m)msg ∈ messages (state m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)has_been_received (ELMO_component i_m) (state m) msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
is: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is (state m) (tr ++ tr_m)
Hlst: finite_trace_last is tr = sigma i_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)has_been_received (ELMO_component i_m) (state m) msgAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
is: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is (state m) (tr ++ tr_m)
Hlst: finite_trace_last is tr = sigma i_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)trace_has_message (field_selector input) msg (tr ++ tr_m)by apply Exists_exists; eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
Hsi: valid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
is: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i_m))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (ELMO_component i_m)) is (state m) (tr ++ tr_m)
Hlst: finite_trace_last is tr = sigma i_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
item: transition_item
msg: Message
Hitem: item ∈ tr_m
Hinput: input item = Some msg
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)Exists (field_selector input msg) tr_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a∃ sigma' : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma sigma' ∧ sigma' i = si ∧ component_reflects_composite sigma' i ∧ sigma' i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma ain_futures ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) ∧ lift_to_composite_state ELMO_component sigma i_m (state m) i = si ∧ component_reflects_composite (lift_to_composite_state ELMO_component sigma i_m (state m)) i ∧ lift_to_composite_state ELMO_component sigma i_m (state m) i_m = state m ∧ other_components_after_send (λ j : index, j = i ∨ j = i_m) (lift_to_composite_state ELMO_component sigma i_m (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma ain_futures ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma alift_to_composite_state ELMO_component sigma i_m (state m) i = siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma acomponent_reflects_composite (lift_to_composite_state ELMO_component sigma i_m (state m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma alift_to_composite_state ELMO_component sigma i_m (state m) i_m = state mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma aother_components_after_send (λ j : index, j = i ∨ j = i_m) (lift_to_composite_state ELMO_component sigma i_m (state m))by eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma ain_futures ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m))by subst; apply state_update_neq.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma alift_to_composite_state ELMO_component sigma i_m (state m) i = siAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma acomponent_reflects_composite (lift_to_composite_state ELMO_component sigma i_m (state m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma acomponent_reflects_composite_messages (state_update ELMO_component sigma i_m (state m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma acomponent_reflects_composite_equivocators (state_update ELMO_component sigma i_m (state m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma acomponent_reflects_composite_messages (state_update ELMO_component sigma i_m (state m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a
m0: Message(∃ j : index, m0 ∈ messages (state_update ELMO_component sigma i_m (state m) j)) → m0 ∈ messages (state_update ELMO_component sigma i_m (state m) i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (si', None)
j: index
m0: Message
Hm0: m0 ∈ messages (state m)
Hi_m: adr (state m) = idx j
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Heqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma j (state m)) a ↔ global_equivocators_simple sigma a
tr_m: list transition_item
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (state_update ELMO_component sigma j (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component j) (composite_type ELMO_component) (lift_to_composite_label ELMO_component j) (λ sj : VLSM.state (ELMO_component j), state_update ELMO_component sigma j sj) tr_m)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m: finite_constrained_trace_from_to (ELMO_component j) (sigma j) (state m) tr_m
Hai_m: adr (sigma j) = idx j
Hiim: i ≠ jm0 ∈ messages (sigma i)by eapply elem_of_submseteq; [| done].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si': VLSM.state (ELMO_component i)
m: Message
sigma: composite_state ELMO_component
Hv: valid Receive (sigma i, Some m)
j: index
m0: Message
Hm0: m0 ∈ messages (state m)
Hi_m: adr (state m) = idx j
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full (sigma i) (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
Hsigma: valid_state_prop ELMOProtocol sigma
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Heqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma j (state m)) a ↔ global_equivocators_simple sigma a
tr_m: list transition_item
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (state_update ELMO_component sigma j (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component j) (composite_type ELMO_component) (lift_to_composite_label ELMO_component j) (λ sj : VLSM.state (ELMO_component j), state_update ELMO_component sigma j sj) tr_m)
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m: finite_constrained_trace_from_to (ELMO_component j) (sigma j) (state m) tr_m
Hai_m: adr (sigma j) = idx j
Hiim: i ≠ j
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
ELMO_mv_local_equivocation_limit_ok0: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)m0 ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma acomponent_reflects_composite_equivocators (state_update ELMO_component sigma i_m (state m)) iby transitivity (global_equivocators_simple sigma a); [apply Heqv | apply Hspecial].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (state_update ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (λ sj : VLSM.state (ELMO_component i_m), state_update ELMO_component sigma i_m sj) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma i_m (state m)) a ↔ local_equivocators_full (sigma i) aby state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma alift_to_composite_state ELMO_component sigma i_m (state m) i_m = state mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma aother_components_after_send (λ j : index, j = i ∨ j = i_m) (lift_to_composite_state ELMO_component sigma i_m (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a
k: index
Hnk: ¬ (k = i ∨ k = i_m)latest_observation_Send (lift_to_composite_state ELMO_component sigma i_m (state m) k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (lift_to_composite_state ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (lift_to_composite_state ELMO_component sigma i_m) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (lift_to_composite_state ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a
k: index
H2: k ≠ i
H3: k ≠ i_mlatest_observation_Send (lift_to_composite_state ELMO_component sigma i_m (state m) k)by apply H_not_i_paused. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si, si': VLSM.state (ELMO_component i)
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( si, Some m) (si', None)
i_m: index
Hi_m: adr (state m) = idx i_m
Hadr_neq: adr (state m) ≠ idx i
Hnot_local_equivocator: ¬ local_equivocators_full si (adr (state m))
Hnot_local_equivocator': ¬ local_equivocators_full si' (adr (state m))
sigma: composite_state ELMO_component
Hsigma: valid_state_prop ELMOProtocol sigma
Hcomponent: sigma i = si
Hspecial: component_reflects_composite sigma i
H_not_i_paused: other_components_after_send (λ j : index, j = i) sigma
Hm_not_sent_yet: ¬ composite_has_been_sent ELMO_component sigma m
Hiim: i ≠ i_m
Hai_m: adr (sigma i_m) = idx i_m
tr_m: list transition_item
Htr_m: finite_constrained_trace_from_to (ELMO_component i_m) (sigma i_m) (state m) tr_m
Htr_m_receive: Forall (λ item : transition_item, l item = Receive) tr_m
Htr_m_inputs_in_sigma: ∀ (item : transition_item) (msg : Message), item ∈ tr_m → input item = Some msg → composite_has_been_directly_observed ELMO_component sigma msg
Htrsigma_m': finite_valid_trace_from_to ELMOProtocol sigma (state_update ELMO_component sigma i_m (state m)) (pre_VLSM_embedding_finite_trace_project (ELMO_component i_m) (composite_type ELMO_component) (lift_to_composite_label ELMO_component i_m) (λ sj : VLSM.state (ELMO_component i_m), state_update ELMO_component sigma i_m sj) tr_m)
Heqv: ∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i_m (state m)) a ↔ global_equivocators_simple sigma a
k: index
H2: k ≠ i
H3: k ≠ i_mlatest_observation_Send (sigma k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i l (sigma i) s' m → component_reflects_composite_messages sigma i → component_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: MessageELMO_component_RAM_transition i l (sigma i) s' m → component_reflects_composite_messages sigma i → component_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i l (sigma i) s' m
Hmsgs: component_reflects_composite_messages sigma i
m': Message(∃ j : index, m' ∈ messages (state_update ELMO_component sigma i s' j)) ↔ m' ∈ messages s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i l (sigma i) s' m
Hmsgs: component_reflects_composite_messages sigma i
m': Message(∃ j : index, m' ∈ messages (state_update ELMO_component sigma i (sigma i <+> MkObservation l m) j)) ↔ m' ∈ messages (sigma i <+> MkObservation l m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i l (sigma i) s' m
Hmsgs: component_reflects_composite_messages sigma i
m': Messagesigma i <+> MkObservation l m = s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i l (sigma i) s' m
Hmsgs: component_reflects_composite_messages sigma i
m': Message(∃ j : index, m' ∈ messages (state_update ELMO_component sigma i (sigma i <+> MkObservation l m) j)) ↔ m' ∈ messages (sigma i <+> MkObservation l m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i l (sigma i) s' m
Hmsgs: component_reflects_composite_messages sigma i
m': Message(∃ j : index, m' ∈ messages (state_update ELMO_component sigma i (sigma i <+> MkObservation l m) j)) → m' ∈ messages (sigma i <+> MkObservation l m)by apply elem_of_messages_addObservation; right; apply Hmsgs; eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i l (sigma i) s' m
Hmsgs: component_reflects_composite_messages sigma i
m': Message
j: index
Hj: m' ∈ messages (sigma j)
n: j ≠ im' ∈ messages (sigma i <+> MkObservation l m)by inversion Ht as [? ? ? [(_ & _ & Hvi) Hti] | ? ? ? [(_ & _ & Hvi) Hti]]; inversion Hvi; inversion Hti; done. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
l: Label
sigma: composite_state ELMO_component
s': State
m: Message
Ht: ELMO_component_RAM_transition i l (sigma i) s' m
Hmsgs: component_reflects_composite_messages sigma i
m': Messagesigma i <+> MkObservation l m = s'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hreflects: component_reflects_composite sigma i
Hm: composite_has_been_sent ELMO_component sigma m∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hreflects: component_reflects_composite sigma i
Hm: composite_has_been_sent ELMO_component sigma m∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
a: Addresslocal_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma m ↔ local_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
Hsome: Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')local_equivocators_full (sigma i) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
Hsome: Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')UMO_reachable no_self_equiv (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
Hsome: Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')local_equivocators_simple (sigma i) (adr (state m))by eapply UMO_reachable_impl, ELMO_reachable_view; [intros ? ? [] | apply Ht].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
Hsome: Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')UMO_reachable no_self_equiv (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
Hsome: Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')local_equivocators_simple (sigma i) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'local_equivocators_simple (sigma i) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'm' ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'm ∈ messages (sigma i)by apply elem_of_messages; right.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'm' ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'm ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hm: composite_has_been_sent ELMO_component sigma m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'∃ j : index, m ∈ messages (sigma j)by apply elem_of_messages; left. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
j: index
Hj: has_been_sent (ELMO_component j) (sigma j) m
H2: m ∈ messages (sigma i)
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H4: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'm ∈ messages (sigma j)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hreflects: component_reflects_composite sigma i
Heqv: local_equivocators_full (sigma i) (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hreflects: component_reflects_composite sigma i
Heqv: local_equivocators_full (sigma i) (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i) (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aby split; intros []; [by left | | by left |]; destruct_and!; subst; left. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
a: Addresslocal_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma m ↔ local_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hreflects: component_reflects_composite sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full s' (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hreflects: component_reflects_composite sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full s' (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full s' (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full s' (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (s', None)
H3: ELMO_recv_valid (sigma i) m
H4: sigma i <+> MkObservation Receive m = s'∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full s' (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (s', None)
H3: ELMO_recv_valid (sigma i) m
H4: sigma i <+> MkObservation Receive m = s'
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i (sigma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full s' (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (s', None)
H3: ELMO_recv_valid (sigma i) m
H4: sigma i <+> MkObservation Receive m = s'
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
a: Addresslocal_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma m ↔ local_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
s': State
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (s', None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full s' (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (s', None)
H3: ELMO_recv_valid (sigma i) m
H4: sigma i <+> MkObservation Receive m = s'
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
a: Address
H2: a = adr (state m) ∧ Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')local_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'¬ composite_has_been_sent ELMO_component sigma mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mlocal_equivocators_full (sigma i) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mUMO_reachable no_self_equiv (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mlocal_equivocators_simple (sigma i) (adr (state m))by eapply UMO_reachable_impl, ELMO_reachable_view; [intros ? ? [] | apply Ht].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mUMO_reachable no_self_equiv (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
Hm': ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mlocal_equivocators_simple (sigma i) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mlocal_equivocators_simple (sigma i) (adr (state m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mm' ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mm ∈ messages (sigma i)by apply elem_of_messages; right.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mm' ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma mm ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
Hneqv: composite_has_been_sent ELMO_component sigma m∃ j : index, m ∈ messages (sigma j)by apply elem_of_messages; left. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m: Message
Ht: input_constrained_transition (ELMO_component i) Receive ( sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hmessages: component_reflects_composite_messages sigma i
Heqvs: component_reflects_composite_equivocators sigma i
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hvi: valid Receive (sigma i, Some m)
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
H3: ELMO_recv_valid (sigma i) m
m': BaseELMO.Message
Hm': m' ∈ receivedMessages (sigma i)
Heqadr: adr (state m) = adr (state m')
Hcmp: ¬ sent_comparable m m'
H2: Receive = Receive
H7: ∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m'
j: index
Hj: has_been_sent (ELMO_component j) (sigma j) mm ∈ messages (sigma j)
The following lemma shows that for any reachable state in an (ELMO_component i)
there is a valid state in ELMOProtocol where component
i
meets most of the
conditions of the previous lemma.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
Hreachable: constrained_state_prop (ELMO_component i) si∃ s : VLSM.state ELMOProtocol, s i = si ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), si = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
Hreachable: constrained_state_prop (ELMO_component i) si∃ s : VLSM.state ELMOProtocol, s i = si ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), si = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: initial_state_prop s∃ s0 : VLSM.state ELMOProtocol, s0 i = s ∧ valid_state_prop ELMOProtocol s0 ∧ component_reflects_composite s0 i ∧ other_components_after_send (λ j : index, j = i) s0 ∧ (∀ (s_prev : State) (l : Label) (m : Message), s = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s0 i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s0 m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om, om': option Message
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, om) (s', om')
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m∃ s : VLSM.state ELMOProtocol, s i = s' ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), s' = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om, om': option Message
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( sigma i, om) (s', om')
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m∃ s : VLSM.state ELMOProtocol, s i = s' ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), s' = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: initial_state_prop s∃ s0 : VLSM.state ELMOProtocol, s0 i = s ∧ valid_state_prop ELMOProtocol s0 ∧ component_reflects_composite s0 i ∧ other_components_after_send (λ j : index, j = i) s0 ∧ (∀ (s_prev : State) (l : Label) (m : Message), s = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s0 i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s0 m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s: VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
Hs: UMO_component_initial_state_prop (idx i) s∃ s0 : VLSM.state ELMOProtocol, s0 i = s ∧ valid_state_prop ELMOProtocol s0 ∧ component_reflects_composite s0 i ∧ other_components_after_send (λ j : index, j = i) s0 ∧ (∀ (s_prev : State) (l : Label) (m : Message), s = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s0 i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s0 m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index∃ s : VLSM.state ELMOProtocol, s i = MkState [] (idx i) ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), MkState [] (idx i) = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index(`(composite_s0 ELMO_component)) i = MkState [] (idx i) ∧ valid_state_prop ELMOProtocol (`(composite_s0 ELMO_component)) ∧ component_reflects_composite (`(composite_s0 ELMO_component)) i ∧ other_components_after_send (λ j : index, j = i) (`(composite_s0 ELMO_component)) ∧ (∀ (s_prev : State) (l : Label) (m : Message), MkState [] (idx i) = s_prev <+> MkObservation l m → let s' := state_update ELMO_component (`(composite_s0 ELMO_component)) i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' (`(composite_s0 ELMO_component)) m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: indexvalid_state_prop ELMOProtocol (λ n : index, MkState [] (idx n))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: indexcomponent_reflects_composite (λ n : index, MkState [] (idx n)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: indexother_components_after_send (λ j : index, j = i) (λ n : index, MkState [] (idx n))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index∀ (s_prev : State) (l : Label) (m : Message), MkState [] (idx i) = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component (λ n : index, MkState [] (idx n)) i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component (λ n : index, MkState [] (idx n)) i s_prev) (λ n : index, MkState [] (idx n)) mby apply initial_state_is_valid.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: indexvalid_state_prop ELMOProtocol (λ n : index, MkState [] (idx n))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: indexcomponent_reflects_composite (λ n : index, MkState [] (idx n)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
m: Message(∃ _ : index, m ∈ []) → m ∈ []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
m: Messagem ∈ [] → ∃ _ : index, m ∈ []Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
a: Addressglobal_equivocators_simple (λ n : index, MkState [] (idx n)) a → local_equivocators_full (MkState [] (idx i)) aby intros [j Hj].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
m: Message(∃ _ : index, m ∈ []) → m ∈ []by inversion 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
m: Messagem ∈ [] → ∃ _ : index, m ∈ []by intros []; itauto.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
a: Addressglobal_equivocators_simple (λ n : index, MkState [] (idx n)) a → local_equivocators_full (MkState [] (idx i)) aby left; cbn.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: indexother_components_after_send (λ j : index, j = i) (λ n : index, MkState [] (idx n))by inversion 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index∀ (s_prev : State) (l : Label) (m : Message), MkState [] (idx i) = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component (λ n : index, MkState [] (idx n)) i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component (λ n : index, MkState [] (idx n)) i s_prev) (λ n : index, MkState [] (idx n)) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om, om': option Message
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, om) (s', om')
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m∃ s : VLSM.state ELMOProtocol, s i = s' ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), s' = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om, om': option Message
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, om) (s', om')
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
sigma':= state_update ELMO_component sigma i s': ∀ j : index, VLSM.state (ELMO_component j)∃ s : VLSM.state ELMOProtocol, s i = s' ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), s' = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om, om': option Message
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, om) (s', om')
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
sigma':= state_update ELMO_component sigma i s': ∀ j : index, VLSM.state (ELMO_component j)valid_state_prop ELMOProtocol sigma' ∧ component_reflects_composite sigma' i ∧ other_components_after_send (λ j : index, j = i) sigma' ∧ (∀ (s_prev : State) (l : Label) (m : Message), s' = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)valid_state_prop ELMOProtocol sigma' ∧ component_reflects_composite sigma' i ∧ other_components_after_send (λ j : index, j = i) sigma' ∧ (∀ (s_prev : State) (l : Label) (m : Message), sigma i <+> MkObservation Send (MkMessage (sigma i)) = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))valid_state_prop ELMOProtocol sigma' ∧ component_reflects_composite sigma' i ∧ other_components_after_send (λ j : index, j = i) sigma' ∧ (∀ (s_prev : State) (l : Label) (m : Message), sigma i <+> MkObservation Send (MkMessage (sigma i)) = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'valid_state_prop ELMOProtocol sigma' ∧ component_reflects_composite sigma' i ∧ other_components_after_send (λ j : index, j = i) sigma' ∧ (∀ (s_prev : State) (l : Label) (m : Message), sigma i <+> MkObservation Send (MkMessage (sigma i)) = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'other_components_after_send (λ j : index, j = i) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'∀ (s_prev : State) (l : Label) (m : Message), sigma i <+> MkObservation Send (MkMessage (sigma i)) = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'component_reflects_composite_messages sigma' iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'component_reflects_composite_equivocators sigma' iby intros j Hnj; subst sigma'; state_update_simpl; apply Hsend.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'other_components_after_send (λ j : index, j = i) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'∀ (s_prev : State) (l : Label) (m : Message), sigma i <+> MkObservation Send (MkMessage (sigma i)) = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i))) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): index → BaseELMO.State
Hv: ELMO_component_valid Send (sigma i) None
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
H2: sigma i <+> MkObservation Send (MkMessage (sigma i)) = MkState (obs (sigma i)) (adr (sigma i)) <+> MkObservation Send (MkMessage (sigma i))valid_state_prop ELMOProtocol (state_update ELMO_component sigma' i (MkState (obs (sigma i)) (adr (sigma i)))) ∧ ELMOProtocol_valid_transition i Send (state_update ELMO_component sigma' i (MkState (obs (sigma i)) (adr (sigma i)))) sigma' (MkMessage (sigma i))by subst sigma'; extensionality j; destruct (decide (i = j)); subst; state_update_simpl; [destruct (sigma j) |].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i))) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): index → BaseELMO.State
Hv: ELMO_component_valid Send (sigma i) None
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
H2: sigma i <+> MkObservation Send (MkMessage (sigma i)) = MkState (obs (sigma i)) (adr (sigma i)) <+> MkObservation Send (MkMessage (sigma i))sigma = state_update ELMO_component sigma' i (MkState (obs (sigma i)) (adr (sigma i)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'component_reflects_composite_messages sigma' iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
m: Message
j: index
Hm: m ∈ messages (sigma' j)m ∈ messages (sigma' i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
m: Message
j: index
Hm: m ∈ messages (sigma' j)
n: i ≠ jm ∈ messages (sigma' i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))), Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))))
m: Message
j: index
Hm: m ∈ messages (sigma j)
n: i ≠ jm ∈ messages (sigma i <+> MkObservation Send (MkMessage (sigma i)))by apply Hreflects; eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))), Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))))
m: Message
j: index
Hm: m ∈ messages (sigma j)
n: i ≠ jm ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'component_reflects_composite_equivocators sigma' iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Addressglobal_equivocators_simple sigma a ↔ local_equivocators_full (sigma' i) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Addressglobal_equivocators_simple sigma' a → global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Addressglobal_equivocators_simple sigma a → global_equivocators_simple sigma' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Addressglobal_equivocators_simple sigma a ↔ local_equivocators_full (sigma' i) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Addresslocal_equivocators_full (sigma i) a ↔ local_equivocators_full (sigma' i) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))), Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))))
a: Addresslocal_equivocators_full (sigma i) a ↔ local_equivocators_full (sigma i <+> MkObservation Send (MkMessage (sigma i))) aby split; [right | intros [|]; [destruct_and! |]].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))), Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))))
a: Addresslocal_equivocators_full_obs (obs (sigma i)) a ↔ a = adr (sigma i) ∧ Send = Receive ∧ (∃ m2 : BaseELMO.Message, m2 ∈ receivedMessages' (obs (sigma i)) ∧ incomparable (MkMessage (sigma i)) m2) ∨ local_equivocators_full_obs (obs (sigma i)) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Addressglobal_equivocators_simple sigma' a → global_equivocators_simple sigma aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
ges_m: Message
ges_recv: composite_has_been_received ELMO_component sigma' ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma' ges_mcomposite_has_been_received ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
ges_m: Message
ges_recv: composite_has_been_received ELMO_component sigma' ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma' ges_m¬ composite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
ges_m: Message
ges_recv: composite_has_been_received ELMO_component sigma' ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma' ges_mcomposite_has_been_received ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
ges_m: Message
j: index
Hrecv: has_been_received (ELMO_component j) (sigma' j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma' ges_mcomposite_has_been_received ELMO_component sigma ges_mby cbn in Hrecv; rewrite decide_False in Hrecv by itauto; exists j.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
ges_m: Message
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j)))) ges_m
Hrecv: has_been_received (ELMO_component j) (sigma j <+> MkObservation Send (MkMessage (sigma j))) ges_m
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma jcomposite_has_been_received ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
ges_m: Message
ges_recv: composite_has_been_received ELMO_component sigma' ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma' ges_m¬ composite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
ges_m: Message
ges_recv: composite_has_been_received ELMO_component sigma' ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma' ges_m
j: index
Hsent: has_been_sent (ELMO_component j) (sigma j) ges_mhas_been_sent (ELMO_component j) (sigma' j) ges_mby eapply has_been_sent_step_update; [| right].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_m: Message
ges_not_sent: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j)))) ges_m
ges_recv: composite_has_been_received ELMO_component (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j)))) ges_m
Hsent: has_been_sent (ELMO_component j) (sigma j) ges_mhas_been_sent (ELMO_component j) (sigma j <+> MkObservation Send (MkMessage (sigma j))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Addressglobal_equivocators_simple sigma a → global_equivocators_simple sigma' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Address
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_received ELMO_component sigma' ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Address
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m¬ composite_has_been_sent ELMO_component sigma' ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Address
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_received ELMO_component sigma' ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Address
ges_m: Message
ges_adr: adr (state ges_m) = a
j: index
Hrecv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mhas_been_received (ELMO_component j) (sigma' j) ges_mby eapply has_been_received_step_update; [| right].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_m: Message
Hrecv: has_been_received (ELMO_component j) (sigma j) ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mhas_been_received (ELMO_component j) (sigma j <+> MkObservation Send (MkMessage (sigma j))) ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Address
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m¬ composite_has_been_sent ELMO_component sigma' ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( sigma i, None) (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Send (sigma i, None) = (sigma i <+> MkObservation Send (MkMessage (sigma i)), Some (MkMessage (sigma i)))
sigma':= state_update ELMO_component sigma i (sigma i <+> MkObservation Send (MkMessage (sigma i))): ∀ j : index, VLSM.state (ELMO_component j)
Hv: valid Send (sigma i, None)
Htsigma: input_valid_transition ELMOProtocol (existT i Send) (sigma, None) (sigma', Some (MkMessage (sigma i)))
Hsigma': valid_state_prop ELMOProtocol sigma'
a: Address
ges_m: Message
ges_adr: adr (state ges_m) = a
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_m
j: index
Hsnd: has_been_sent (ELMO_component j) (sigma' j) ges_mcomposite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
ges_m: Message
Hsnd: has_been_sent (ELMO_component j) (sigma j <+> MkObservation Send (MkMessage (sigma j))) ges_m
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
ges_m: Message
Hsnd: ges_m ∈ MkMessage (sigma j) :: map message (filter isSend (obs (sigma j)))
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_recv: composite_has_been_received ELMO_component sigma ges_m
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma ges_mcomposite_has_been_sent ELMO_component sigma ges_mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma (MkMessage (sigma j))
ges_recv: composite_has_been_received ELMO_component sigma (MkMessage (sigma j))composite_has_been_sent ELMO_component sigma (MkMessage (sigma j))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma (MkMessage (sigma j))
ges_recv: composite_has_been_received ELMO_component sigma (MkMessage (sigma j))sizeState (sigma j) < sizeState (sigma j)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma (MkMessage (sigma j))
ges_recv: composite_has_been_received ELMO_component sigma (MkMessage (sigma j))sizeState (state (MkMessage (sigma j))) < sizeState (sigma j)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma (MkMessage (sigma j))
ges_recv: composite_has_been_received ELMO_component sigma (MkMessage (sigma j))∃ j0 : index, MkMessage (sigma j) ∈ messages (sigma j0)by apply elem_of_messages; right.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
sigma: VLSM.state ELMOProtocol
j: index
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component j)) Send ( sigma j, None) (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hsigma: valid_state_prop ELMOProtocol sigma
Hsigma': valid_state_prop ELMOProtocol (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))))
Htsigma: input_valid_transition ELMOProtocol (existT j Send) (sigma, None) (state_update ELMO_component sigma j (sigma j <+> MkObservation Send (MkMessage (sigma j))), Some (MkMessage (sigma j)))
Hv: valid Send (sigma j, None)
Hti: transition Send (sigma j, None) = (sigma j <+> MkObservation Send (MkMessage (sigma j)), Some (MkMessage (sigma j)))
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma j = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma j s_prev) ∧ ELMOProtocol_valid_transition j l (state_update ELMO_component sigma j s_prev) sigma m
Hsend: other_components_after_send (λ j0 : index, j0 = j) sigma
Hreflects: component_reflects_composite sigma j
ges_not_sent: ¬ composite_has_been_sent ELMO_component sigma (MkMessage (sigma j))
j': index
Hrecv: has_been_received (ELMO_component j') (sigma j') (MkMessage (sigma j))MkMessage (sigma j) ∈ messages (sigma j')Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om, om': option Message
sigma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( sigma i, om) (s', om')
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m∃ s : VLSM.state ELMOProtocol, s i = s' ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m : Message), s' = s_prev <+> MkObservation l m → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'∃ s : VLSM.state ELMOProtocol, s i = sigma i <+> MkObservation Receive m ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m∃ s : VLSM.state ELMOProtocol, s i = sigma i <+> MkObservation Receive m ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m(∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gamma) → ∃ s : VLSM.state ELMOProtocol, s i = sigma i <+> MkObservation Receive m ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m(∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gamma) → ∃ s : VLSM.state ELMOProtocol, s i = sigma i <+> MkObservation Receive m ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i s') i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i s') i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma∃ s : VLSM.state ELMOProtocol, s i = sigma i <+> MkObservation Receive m ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)∃ s : VLSM.state ELMOProtocol, s i = sigma i <+> MkObservation Receive m ∧ valid_state_prop ELMOProtocol s ∧ component_reflects_composite s i ∧ other_components_after_send (λ j : index, j = i) s ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component s i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' s m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)valid_state_prop ELMOProtocol sigma' ∧ component_reflects_composite sigma' i ∧ other_components_after_send (λ j : index, j = i) sigma' ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' NoneAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid_state_prop ELMOProtocol sigma' ∧ component_reflects_composite sigma' i ∧ other_components_after_send (λ j : index, j = i) sigma' ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' NoneAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)ELMO_not_heavy (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (sigma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)ELMO_not_heavy (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (sigma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)(equivocation_fault (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) <= threshold)%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (sigma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)(equivocation_fault (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) <= equivocation_fault (sigma i <+> MkObservation Receive m))%RAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (sigma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)equivocating_validators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) ⊆ equivocating_validators (sigma i <+> MkObservation Receive m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (sigma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x: Addressx ∈ equivocating_validators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) → x ∈ equivocating_validators (sigma i <+> MkObservation Receive m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (sigma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x: Addressx ∈ filter (λ v : Address, ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) v) (list_to_set (map idx (enum index))) → x ∈ filter (λ v : Address, local_equivocators_full (sigma i <+> MkObservation Receive m) v) (list_to_set (map idx (enum index)))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) alocal_equivocators_full (gamma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m) i) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) alocal_equivocators_full (gamma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (gamma i <+> MkObservation Receive m) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) alocal_equivocators_full (gamma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (gamma i <+> MkObservation Receive m) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) acomposite_constrained_state_prop ELMO_component (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m))Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (gamma i <+> MkObservation Receive m) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) avalid_state_prop (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (gamma i <+> MkObservation Receive m) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) aoption_valid_message_prop (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (gamma i <+> MkObservation Receive m) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) avalid_state_prop (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) gammaby apply (VLSM_incl_in_futures (constrained_preloaded_incl (free_composite_vlsm _) ELMO_global_constraint)).Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (gamma i <+> MkObservation Receive m) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) ain_futures (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) ?first gammaby apply any_message_is_valid_in_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
gamma: VLSM.state ELMOProtocol
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (gamma i, Some m) (gamma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), gamma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (gamma i, Some m) = (gamma i <+> MkObservation Receive m, None)
Hv: valid Receive (gamma i, Some m)
ELMO_mv_full_node0: full_node (gamma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (gamma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: (equivocation_fault (gamma i <+> MkObservation Receive m) <= threshold)%R
Hsender: MessageHasSender m
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: ∀ a : Address, global_equivocators_simple (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (gamma i <+> MkObservation Receive m) a
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
x, a: Address
H2: ELMO_global_equivocators (state_update ELMO_component gamma i (gamma i <+> MkObservation Receive m)) aoption_valid_message_prop (preloaded_with_all_messages_vlsm (free_composite_vlsm ELMO_component)) (Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid_state_prop ELMOProtocol sigma' ∧ component_reflects_composite sigma' i ∧ other_components_after_send (λ j : index, j = i) sigma' ∧ (∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m0)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid_state_prop ELMOProtocol sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonecomponent_reflects_composite sigma' iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Noneother_components_after_send (λ j : index, j = i) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' None∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid_state_prop ELMOProtocol sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid_state_prop ELMOProtocol gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Noneoption_valid_message_prop ELMOProtocol (Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid (existT i Receive) (gamma, Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' NoneELMO_global_constraint (existT i Receive) (gamma, Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonetransition (existT i Receive) (gamma, Some m) = (sigma', None)by eapply in_futures_valid_snd.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid_state_prop ELMOProtocol gammaby eapply ELMO_valid_states_only_receive_valid_messages; [eapply in_futures_valid_snd | constructor 1].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Noneoption_valid_message_prop ELMOProtocol (Some m)by cbn; rewrite Heq_i.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonevalid (existT i Receive) (gamma, Some m)by apply Hvtsigma.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' NoneELMO_global_constraint (existT i Receive) (gamma, Some m)by cbn; rewrite Heq_i.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonetransition (existT i Receive) (gamma, Some m) = (sigma', None)done.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Nonecomponent_reflects_composite sigma' iby intros j Hnj; subst sigma'; state_update_simpl; apply Hgamma_send.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' Noneother_components_after_send (λ j : index, j = i) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
Hsender: MessageHasSender m
gamma: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m): ∀ j : index, VLSM.state (ELMO_component j)
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m) sigma' None∀ (s_prev : State) (l : Label) (m0 : Message), sigma i <+> MkObservation Receive m = s_prev <+> MkObservation l m0 → let s' := state_update ELMO_component sigma' i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma' m0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m0: Message
H2: sigma i <+> MkObservation Receive m0 = MkState (obs (sigma i)) (adr (sigma i)) <+> MkObservation Receive m0
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m0) (sigma i <+> MkObservation Receive m0, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hsender: MessageHasSender m0
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m0)
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m0
ELMO_mv_full_node0: full_node (sigma i) m0
Hv: ELMO_component_valid Receive (sigma i) (Some m0)
Hti: (sigma i <+> MkObservation Receive m0, None) = (sigma i <+> MkObservation Receive m0, None)
gamma: composite_state ELMO_component
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m0)) i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m0)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
sigma':= state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m0): index → BaseELMO.State
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m0) sigma' Nonevalid_state_prop ELMOProtocol (state_update ELMO_component sigma' i (MkState (obs (gamma i)) (adr (gamma i)))) ∧ ELMOProtocol_valid_transition i Receive (state_update ELMO_component sigma' i (MkState (obs (gamma i)) (adr (gamma i)))) sigma' m0by split; [eapply in_futures_valid_snd | constructor].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: composite_state ELMO_component
m0: Message
H2: sigma i <+> MkObservation Receive m0 = MkState (obs (sigma i)) (adr (sigma i)) <+> MkObservation Receive m0
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m0) (sigma i <+> MkObservation Receive m0, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hsender: MessageHasSender m0
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m0)
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m0
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m0
ELMO_mv_full_node0: full_node (sigma i) m0
Hv: ELMO_component_valid Receive (sigma i) (Some m0)
Hti: (sigma i <+> MkObservation Receive m0, None) = (sigma i <+> MkObservation Receive m0, None)
gamma: composite_state ELMO_component
Hfutures: in_futures ELMOProtocol sigma gamma
Heq_i: gamma i = sigma i
Hsigma'_messages: component_reflects_composite_messages (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m0)) i
Hsigma'_eqvs: component_reflects_composite_equivocators (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m0)) i
Hgamma_send: other_components_after_send (λ j : index, j = i) gamma
Hvtsigma: valid_transition ELMOProtocol (existT i Receive) gamma (Some m0) (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m0)) Nonevalid_state_prop ELMOProtocol gamma ∧ ELMOProtocol_valid_transition i Receive gamma (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m0)) m0Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma mcomponent_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma mcomponent_reflects_composite_equivocators (state_update ELMO_component sigma i s') iby eapply component_reflects_composite_messages_step_update, Hreflects; constructor 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma mcomponent_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma mcomponent_reflects_composite_equivocators (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma m∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full (state_update ELMO_component sigma i s' i) aby eapply receiving_already_sent_global_local_equivocators.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
c: composite_has_been_sent ELMO_component sigma m∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
e: adr (state m) = idx i∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
e: adr (state m) = idx i∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
e: adr (state m) = idx ihas_been_sent (ELMO_component i) (sigma i) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
e: adr (state m) = idx iadr (sigma i) = adr (state m)by eapply ELMO_reachable_adr, Ht.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
e: adr (state m) = idx iadr (sigma i) = idx iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))component_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))component_reflects_composite_equivocators (state_update ELMO_component sigma i s') iby eapply component_reflects_composite_messages_step_update, Hreflects; constructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))component_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))component_reflects_composite_equivocators (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full (state_update ELMO_component sigma i s' i) aby eapply receiving_already_equivocating_global_local_equivocators.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
l: local_equivocators_full (sigma i) (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full s' (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))component_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))component_reflects_composite_equivocators (state_update ELMO_component sigma i s') iby eapply component_reflects_composite_messages_step_update, Hreflects; constructor 1.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))component_reflects_composite_messages (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))component_reflects_composite_equivocators (state_update ELMO_component sigma i s') iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full (state_update ELMO_component sigma i s' i) aby eapply receiving_not_already_equivocating_global_local_equivocators.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
l: local_equivocators_full s' (adr (state m))∀ a : Address, global_equivocators_simple (state_update ELMO_component sigma i s') a ↔ local_equivocators_full s' aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
Hsender: MessageHasSender m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full s' (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full s' (adr (state m))∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
s': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (s', None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (s', None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
H3: sigma i <+> MkObservation Receive m = s'
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full s' (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i s') i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)valid_state_prop ELMOProtocol chiAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)option_valid_message_prop ELMOProtocol NoneAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)valid (existT i_m Send) (chi, None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)transition (existT i_m Send) (chi, None) = (sigma', Some m)by eapply in_futures_valid_snd.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)valid_state_prop ELMOProtocol chiby apply option_valid_message_None.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)option_valid_message_prop ELMOProtocol Noneby constructor.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)valid (existT i_m Send) (chi, None)by subst sigma'; cbn; rewrite Heqi_m; destruct m.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)transition (existT i_m Send) (chi, None) = (sigma', Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_mELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_mELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_mELMO_component_RAM_transition i Receive (sigma i) (sigma i <+> MkObservation Receive m) mAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_mvalid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_moption_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m)by eapply valid_state_project_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_mvalid_state_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (sigma i)by apply any_message_is_valid_in_preloaded.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_moption_valid_message_prop (preloaded_with_all_messages_vlsm (ELMO_component i)) (Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m∃ gamma : VLSM.state ELMOProtocol, in_futures ELMOProtocol sigma gamma ∧ gamma i = sigma i ∧ component_reflects_composite (state_update ELMO_component gamma i (sigma i <+> MkObservation Receive m)) i ∧ other_components_after_send (λ j : index, j = i) gammaAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mother_components_after_send (λ j : index, j = i) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) min_futures ELMOProtocol sigma sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) msigma' i = sigma iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mcomponent_reflects_composite_messages (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mcomponent_reflects_composite_equivocators (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mother_components_after_send (λ j : index, j = i) sigma'Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
k: index
Hk: k ≠ ilatest_observation_Send (sigma' k)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
k: index
Hk: k ≠ ilatest_observation_Send (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) k)by constructor 2; eexists _, _.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (chi i) (sigma i <+> MkObservation Receive m) m
Hk: i_m ≠ ilatest_observation_Send (chi i_m <+> MkObservation Send m)by etransitivity; [| eapply input_valid_transition_in_futures].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) min_futures ELMOProtocol sigma sigma'by subst sigma'; rewrite <- Heqi; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) msigma' i = sigma iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mcomponent_reflects_composite_messages (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
m0: Message
j: index
Hj: m0 ∈ messages (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m) j)m0 ∈ messages (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m) i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
m0: Message
j: index
Hj: m0 ∈ messages (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m) j)
n: i ≠ jm0 ∈ messages (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m) i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
j: index
chi: VLSM.state ELMOProtocol
m0: Message
Hj: m0 ∈ messages (chi j <+> MkObservation Send m)
Hsender: adr (state m) = idx j
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
H3: ELMO_component_RAM_transition i Receive (chi i) (sigma i <+> MkObservation Receive m) m
H2: i ≠ j
Hti_m: input_valid_transition ELMOProtocol (existT j Send) (chi, None) (state_update ELMO_component chi j (chi j <+> MkObservation Send m), Some m)
Hchi_send: other_components_after_send (λ j0 : index, j0 = i ∨ j0 = j) chi
Heqi_m: chi j = state m
n: i ≠ jm0 = message (MkObservation Receive m) ∨ m0 ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (chi i) (sigma i <+> MkObservation Receive m) m
m0: Message
j: index
Hj: m0 ∈ messages (chi j)
n: i ≠ j
n0: i_m ≠ jm0 = message (MkObservation Receive m) ∨ m0 ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
j: index
chi: VLSM.state ELMOProtocol
m0: Message
Hj: m0 ∈ messages (chi j <+> MkObservation Send m)
Hsender: adr (state m) = idx j
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
H3: ELMO_component_RAM_transition i Receive (chi i) (sigma i <+> MkObservation Receive m) m
H2: i ≠ j
Hti_m: input_valid_transition ELMOProtocol (existT j Send) (chi, None) (state_update ELMO_component chi j (chi j <+> MkObservation Send m), Some m)
Hchi_send: other_components_after_send (λ j0 : index, j0 = i ∨ j0 = j) chi
Heqi_m: chi j = state m
n: i ≠ jm0 = message (MkObservation Receive m) ∨ m0 ∈ messages (sigma i)by right; rewrite <- Heqi; apply Hchi_messages; eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
j: index
chi: VLSM.state ELMOProtocol
m0: Message
H4: m0 ∈ messages (chi j)
Hsender: adr (state m) = idx j
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
H3: ELMO_component_RAM_transition i Receive (chi i) (sigma i <+> MkObservation Receive m) m
H2: i ≠ j
Hti_m: input_valid_transition ELMOProtocol (existT j Send) (chi, None) (state_update ELMO_component chi j (chi j <+> MkObservation Send m), Some m)
Hchi_send: other_components_after_send (λ j0 : index, j0 = i ∨ j0 = j) chi
Heqi_m: chi j = state m
n: i ≠ jm0 = message (MkObservation Receive m) ∨ m0 ∈ messages (sigma i)by right; rewrite <- Heqi; apply Hchi_messages; eexists.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (chi i) (sigma i <+> MkObservation Receive m) m
m0: Message
j: index
Hj: m0 ∈ messages (chi j)
n: i ≠ j
n0: i_m ≠ jm0 = message (MkObservation Receive m) ∨ m0 ∈ messages (sigma i)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → let s' := state_update ELMO_component sigma i s_prev in valid_state_prop ELMOProtocol s' ∧ ELMOProtocol_valid_transition i l s' sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) mcomponent_reflects_composite_equivocators (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m)) iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m)) a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m)) a ↔ global_equivocators_simple chi aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple chi a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple (state_update ELMO_component sigma' i (sigma i <+> MkObservation Receive m)) a ↔ global_equivocators_simple chi aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m)) a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m)) m ↔ global_equivocators_simple chi aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: AddressELMO_component_RAM_transition i_m Send (chi i_m) (chi i_m <+> MkObservation Send m) ?Goal1Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: Address¬ global_equivocators_simple chi (idx i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple chi a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m)) m ↔ global_equivocators_simple chi aby constructor; apply input_valid_transition_project_active in Hti_m; state_update_simpl.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: AddressELMO_component_RAM_transition i_m Send (chi i_m) (chi i_m <+> MkObservation Send m) ?Goal1by contradict Hneqv; rewrite Hsender, <- Heqi; apply Hchi_eqvs.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: Address¬ global_equivocators_simple chi (idx i_m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple chi a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m)) m ↔ global_equivocators_simple chi aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple chi a ∨ a = adr (state m) ∧ ¬ composite_has_been_sent ELMO_component (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m)) m → global_equivocators_simple chi aby contradict Hnsnd; exists i_m; state_update_simpl; left.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m), Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m) i) (sigma i <+> MkObservation Receive m) m
a: Address
Hnsnd: ¬ composite_has_been_sent ELMO_component (state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m)) mglobal_equivocators_simple chi aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addressglobal_equivocators_simple chi a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addresslocal_equivocators_full (chi i) a ↔ local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addresslocal_equivocators_full (sigma i) a → local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addresslocal_equivocators_full (sigma i <+> MkObservation Receive m) a → local_equivocators_full (sigma i) aby intros Heqv; eapply local_equivocators_full_step_update; [constructor | left].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addresslocal_equivocators_full (sigma i) a → local_equivocators_full (sigma i <+> MkObservation Receive m) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Addresslocal_equivocators_full (sigma i <+> MkObservation Receive m) a → local_equivocators_full (sigma i) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Address
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) alocal_equivocators_full (sigma i) aAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Address
Heqv: local_equivocators_full (sigma i <+> MkObservation Receive m) a
n: a ≠ adr (state m)local_equivocators_full (sigma i) aby destruct Heqv as [| [->]]. Qed.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
sigma: VLSM.state ELMOProtocol
m: Message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive (sigma i, Some m) (sigma i <+> MkObservation Receive m, None)
Hsigma: valid_state_prop ELMOProtocol sigma
Hreflects: component_reflects_composite sigma i
Hsend: other_components_after_send (λ j : index, j = i) sigma
Hall: ∀ (s_prev : State) (l : Label) (m : Message), sigma i = s_prev <+> MkObservation l m → valid_state_prop ELMOProtocol (state_update ELMO_component sigma i s_prev) ∧ ELMOProtocol_valid_transition i l (state_update ELMO_component sigma i s_prev) sigma m
Hti: transition Receive (sigma i, Some m) = (sigma i <+> MkObservation Receive m, None)
Hv: valid Receive (sigma i, Some m)
ELMO_mv_full_node0: full_node (sigma i) m
ELMO_mv_no_self_equiv0: no_self_equiv (sigma i) m
ELMO_mv_msg_valid_full0: ELMO_msg_valid_full m
Hlocal_ok: local_equivocation_limit_ok (sigma i <+> MkObservation Receive m)
i_m: index
Hsender: adr (state m) = idx i_m
Hnot_sent: ¬ composite_has_been_sent ELMO_component sigma m
Hm_not_by_i: adr (state m) ≠ idx i
Hneqv: ¬ local_equivocators_full (sigma i) (adr (state m))
Hneqv': ¬ local_equivocators_full (sigma i <+> MkObservation Receive m) (adr (state m))
chi: VLSM.state ELMOProtocol
Hfutures: in_futures ELMOProtocol sigma chi
Heqi: chi i = sigma i
Hchi_messages: component_reflects_composite_messages chi i
Hchi_eqvs: component_reflects_composite_equivocators chi i
Heqi_m: chi i_m = state m
Hchi_send: other_components_after_send (λ j : index, j = i ∨ j = i_m) chi
sigma':= state_update ELMO_component chi i_m (chi i_m <+> MkObservation Send m): ∀ j : index, VLSM.state (ELMO_component j)
Hti_m: input_valid_transition ELMOProtocol (existT i_m Send) (chi, None) (sigma', Some m)
H2: i ≠ i_m
H3: ELMO_component_RAM_transition i Receive (sigma' i) (sigma i <+> MkObservation Receive m) m
a: Address
n: a ≠ adr (state m)
Heqv: local_equivocators_full (sigma i) a ∨ a = adr (state m) ∧ Receive = Receive ∧ (∃ m' : BaseELMO.Message, m' ∈ receivedMessages (sigma i) ∧ incomparable m m')local_equivocators_full (sigma i) a
Every ELMO_component is a validator for ELMOProtocol.
Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ i : index, component_projection_validator_prop ELMO_component ELMO_global_constraint iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index∀ i : index, component_projection_validator_prop ELMO_component ELMO_global_constraint iAddress: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om: option Message
Hvti: input_constrained (ELMO_component i) li (si, om)valid li (si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om: option Message
si': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om': option Message
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) li ( si, om) (si', om')valid li (si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om: option Message
si': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om': option Message
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) li ( si, om) (si', om')
Hvi: valid li (si, om)
Hti: transition li (si, om) = (si', om')valid li (si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om: option Message
si': VLSM.state (preloaded_with_all_messages_vlsm (ELMO_component i))
om': option Message
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) li ( si, om) (si', om')
Hvi: valid li (si, om)
Hti: transition li (si, om) = (si', om')
Hsi': constrained_state_prop (ELMO_component i) si'valid li (si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om, om': option Message
s': VLSM.state ELMOProtocol
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) li ( si, om) (s' i, om')
Hvi: valid li (si, om)
Hti: transition li (si, om) = (s' i, om')
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ (s_prev : State) (l : Label) (m : Message), s' i = s_prev <+> MkObservation l m → let s'0 := state_update ELMO_component s' i s_prev in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i l s'0 s' mvalid li (si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om, om': option Message
s': VLSM.state ELMOProtocol
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) li ( si, om) (s' i, om')
Hvi: valid li (si, om)
Hti: transition li (si, om) = (s' i, om')
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation li m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i li s'0 s' mvalid li (si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om, om': option Message
s': VLSM.state ELMOProtocol
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) li ( si, om) (s' i, om')
Hvi: valid li (si, om)
Hti: transition li (si, om) = (s' i, om')
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation li m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i li s'0 s' mstate_update ELMO_component s' i si i = si ∧ input_valid (composite_vlsm ELMO_component ELMO_global_constraint) (existT i li) (state_update ELMO_component s' i si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
li: VLSM.label (ELMO_component i)
si: VLSM.state (ELMO_component i)
om, om': option Message
s': VLSM.state ELMOProtocol
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) li ( si, om) (s' i, om')
Hvi: valid li (si, om)
Hti: transition li (si, om) = (s' i, om')
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation li m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i li s'0 s' minput_valid (composite_vlsm ELMO_component ELMO_global_constraint) (existT i li) (state_update ELMO_component s' i si, om)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
s': VLSM.state ELMOProtocol
m: Message
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( si, Some m) (s' i, None)
Hvi: valid Receive (si, Some m)
Hti: transition Receive (si, Some m) = (s' i, None)
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation Receive m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i Receive s'0 s' m
H2: ELMO_recv_valid si m
Heqs'i: s' i = si <+> MkObservation Receive m
Hvs'0: valid_state_prop ELMOProtocol (state_update ELMO_component s' i si)
Hvt0: ELMOProtocol_valid_transition i Receive (state_update ELMO_component s' i si) s' m
i0: index
s1, s2: VLSM.state ELMOProtocol
m0: Message
Hvt: valid_transition ELMOProtocol (existT i Receive) (state_update ELMO_component s' i si) (Some m) s' None
H3: i0 = i
H5: s1 = state_update ELMO_component s' i si
H6: s2 = s'
H7: m0 = minput_valid (composite_vlsm ELMO_component ELMO_global_constraint) (existT i Receive) (state_update ELMO_component s' i si, Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
s': VLSM.state ELMOProtocol
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( si, None) (s' i, Some (MkMessage si))
Hvi: valid Send (si, None)
Hti: transition Send (si, None) = (s' i, Some (MkMessage si))
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation Send m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i Send s'0 s' m
Heqs'i: s' i = si <+> MkObservation Send (MkMessage si)
Hvs'0: valid_state_prop ELMOProtocol (state_update ELMO_component s' i si)
Hvt0: ELMOProtocol_valid_transition i Send (state_update ELMO_component s' i si) s' (MkMessage si)
i0: index
s1, s2: VLSM.state ELMOProtocol
m: Message
Hvt: valid_transition ELMOProtocol (existT i Send) (state_update ELMO_component s' i si) None s' (Some (MkMessage si))
H2: i0 = i
H4: s1 = state_update ELMO_component s' i si
H5: s2 = s'
H6: m = MkMessage siinput_valid (composite_vlsm ELMO_component ELMO_global_constraint) (existT i Send) (state_update ELMO_component s' i si, None)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
s': VLSM.state ELMOProtocol
m: Message
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( si, Some m) (s' i, None)
Hvi: valid Receive (si, Some m)
Hti: transition Receive (si, Some m) = (s' i, None)
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation Receive m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i Receive s'0 s' m
H2: ELMO_recv_valid si m
Heqs'i: s' i = si <+> MkObservation Receive m
Hvs'0: valid_state_prop ELMOProtocol (state_update ELMO_component s' i si)
Hvt0: ELMOProtocol_valid_transition i Receive (state_update ELMO_component s' i si) s' m
i0: index
s1, s2: VLSM.state ELMOProtocol
m0: Message
Hvt: valid_transition ELMOProtocol (existT i Receive) (state_update ELMO_component s' i si) (Some m) s' None
H3: i0 = i
H5: s1 = state_update ELMO_component s' i si
H6: s2 = s'
H7: m0 = minput_valid (composite_vlsm ELMO_component ELMO_global_constraint) (existT i Receive) (state_update ELMO_component s' i si, Some m)Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
s': VLSM.state ELMOProtocol
m: Message
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( si, Some m) (s' i, None)
Hvi: valid Receive (si, Some m)
Hti: transition Receive (si, Some m) = (s' i, None)
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation Receive m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i Receive s'0 s' m
H2: ELMO_recv_valid si m
Heqs'i: s' i = si <+> MkObservation Receive m
Hvs'0: valid_state_prop ELMOProtocol (state_update ELMO_component s' i si)
Hvt0: ELMOProtocol_valid_transition i Receive (state_update ELMO_component s' i si) s' m
i0: index
s1, s2: VLSM.state ELMOProtocol
m0: Message
Hvt: valid_transition ELMOProtocol (existT i Receive) (state_update ELMO_component s' i si) (Some m) s' None
H3: i0 = i
H5: s1 = state_update ELMO_component s' i si
H6: s2 = s'
H7: m0 = moption_valid_message_prop (composite_vlsm ELMO_component ELMO_global_constraint) (Some m)by eexists; eapply has_been_received_step_update; [| left].Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
s': VLSM.state ELMOProtocol
m: Message
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Receive ( si, Some m) (s' i, None)
Hvi: valid Receive (si, Some m)
Hti: transition Receive (si, Some m) = (s' i, None)
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation Receive m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i Receive s'0 s' m
H2: ELMO_recv_valid si m
Heqs'i: s' i = si <+> MkObservation Receive m
Hvs'0: valid_state_prop ELMOProtocol (state_update ELMO_component s' i si)
Hvt0: ELMOProtocol_valid_transition i Receive (state_update ELMO_component s' i si) s' m
i0: index
s1, s2: VLSM.state ELMOProtocol
m0: Message
Hvt: valid_transition ELMOProtocol (existT i Receive) (state_update ELMO_component s' i si) (Some m) s' None
H3: i0 = i
H5: s1 = state_update ELMO_component s' i si
H6: s2 = s'
H7: m0 = mhas_been_received (composite_vlsm ELMO_component ELMO_global_constraint) s' mby repeat split; [| apply option_valid_message_None | apply Hvt]. Qed. End sec_ELMOProtocol. End sec_ELMO.Address: Type
EqDecision0: EqDecision Address
H: Measurable Address
State:= BaseELMO.State: Type
Observation:= BaseELMO.Observation: Type
Message:= BaseELMO.Message: Type
threshold: R
index: Type
EqDecision1: EqDecision index
H0: finite.Finite index
idx: index → Address
Inj0: Inj eq eq idx
ReachableThreshold0: ReachableThreshold (Message_validator idx) (listset (Message_validator idx)) threshold
H1: Inhabited index
i: index
si: VLSM.state (ELMO_component i)
s': VLSM.state ELMOProtocol
Hvti: input_valid_transition (preloaded_with_all_messages_vlsm (ELMO_component i)) Send ( si, None) (s' i, Some (MkMessage si))
Hvi: valid Send (si, None)
Hti: transition Send (si, None) = (s' i, Some (MkMessage si))
Hs': valid_state_prop ELMOProtocol s'
Htransitions: ∀ m : Message, s' i = si <+> MkObservation Send m → let s'0 := state_update ELMO_component s' i si in valid_state_prop ELMOProtocol s'0 ∧ ELMOProtocol_valid_transition i Send s'0 s' m
Heqs'i: s' i = si <+> MkObservation Send (MkMessage si)
Hvs'0: valid_state_prop ELMOProtocol (state_update ELMO_component s' i si)
Hvt0: ELMOProtocol_valid_transition i Send (state_update ELMO_component s' i si) s' (MkMessage si)
i0: index
s1, s2: VLSM.state ELMOProtocol
m: Message
Hvt: valid_transition ELMOProtocol (existT i Send) (state_update ELMO_component s' i si) None s' (Some (MkMessage si))
H2: i0 = i
H4: s1 = state_update ELMO_component s' i si
H5: s2 = s'
H6: m = MkMessage siinput_valid (composite_vlsm ELMO_component ELMO_global_constraint) (existT i Send) (state_update ELMO_component s' i si, None)