From stdpp Require Import prelude finite. From Coq Require Import FinFun FunctionalExtensionality Reals. From VLSM.Lib Require Import Preamble ListSetExtras StdppExtras.From VLSM.Core Require Import VLSM VLSMProjections Plans Composition Equivocation. From VLSM.Core Require Import SubProjectionTraces. From VLSM.Core Require Import Equivocation.NoEquivocation. From VLSM.Core Require Import Equivocators.Equivocators. From VLSM.Core Require Import Equivocators.MessageProperties.
Core: VLSM Equivocator Composition
X
of VLSMs, we can model equivocator behavior by
creating an equivocator composition which replaces each component of X
with its equivocator version and strengthens the composition constraint to
allow no (additional) equivocations, that is, all messages being received
must have been previously sent by one of the (equivocator) VLSMs in the
composition.
Extracting equivocator traces from equivocator composition traces
X
from
the traces of the equivocator composition, we'll assume that only the
first state copy of each machine is observable in the composition
and we ignore the activity corresponding to any other state copy,
including the forks.
Section sec_fully_equivocating_composition. Context {message : Type} `{finite.Finite index} (IM : index -> VLSM message) `{forall i : index, HasBeenSentCapability (IM i)} `{forall i : index, HasBeenReceivedCapability (IM i)} (Free := free_composite_vlsm IM) . Definition equivocator_IM (i : index) : VLSM message := equivocator_vlsm (IM i). Definition equivocating_indices (index_listing : list index) (s : composite_state equivocator_IM) : list index := filter (fun i => is_equivocating_state (IM i) (s i)) index_listing.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
Hs: composite_initial_state_prop equivocator_IM sequivocating_indices index_listing s = []message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
Hs: composite_initial_state_prop equivocator_IM sequivocating_indices index_listing s = []message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
Hs: composite_initial_state_prop equivocator_IM sForall (λ a : index, ¬ is_equivocating_state (IM a) (s a)) index_listingmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
Hs: composite_initial_state_prop equivocator_IM s∀ x : index, x ∈ index_listing → ¬ is_equivocating_state (IM x) (s x)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
Hs: composite_initial_state_prop equivocator_IM s
i: index¬ is_equivocating_state (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
i: index
Hs: initial_state_prop (s i)¬ is_equivocating_state (IM i) (s i)by congruence. Qed. Section sec_equivocating_indices_BasicEquivocation. Context (threshold : R) `{ReachableThreshold index Ci threshold} . Program Instance equivocating_indices_BasicEquivocation : BasicEquivocation (composite_state equivocator_IM) index Ci threshold := { is_equivocating := fun s v => v ∈ equivocating_indices (enum index) s ; state_validators := fun s => list_to_set(enum index) }.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
i: index
Hs: is_singleton_state (IM i) (s i)¬ is_equivocating_state (IM i) (s i)message, index: Type
IM: index → VLSM message
EqDecision0: EqDecision index
H: finite.Finite index
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
x: composite_state equivocator_IM
y: indexDecision (y ∈ equivocating_indices (enum index) x)by typeclasses eauto. Qed.message, index: Type
IM: index → VLSM message
EqDecision0: EqDecision index
H: finite.Finite index
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
x: composite_state equivocator_IM
y: indexDecision (y ∈ equivocating_indices (enum index) x)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold∀ s : composite_state equivocator_IM, equivocating_validators s ≡ list_to_set (equivocating_indices (enum index) s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold∀ s : composite_state equivocator_IM, equivocating_validators s ≡ list_to_set (equivocating_indices (enum index) s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IMequivocating_validators s ≡ list_to_set (equivocating_indices (enum index) s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IMset_eq (elements (equivocating_validators s)) (elements (list_to_set (equivocating_indices (enum index) s)))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IMset_eq (elements (filter (λ v : index, (let (is_equivocating, is_equivocating_dec, state_validators, equivocating_validators, equivocation_fault, not_heavy) := equivocating_indices_BasicEquivocation in is_equivocating) s v) (state_validators s))) (elements (list_to_set (equivocating_indices (enum index) s)))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IMset_eq (elements (filter (λ v : index, v ∈ equivocating_indices (enum index) s) (list_to_set (enum index)))) (elements (list_to_set (equivocating_indices (enum index) s)))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IM
Hin: indexHin ∈ equivocating_indices (enum index) s ∧ Hin ∈ enum index → Hin ∈ equivocating_indices (enum index) smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IM
Hin: indexHin ∈ equivocating_indices (enum index) s → Hin ∈ equivocating_indices (enum index) s ∧ Hin ∈ enum indexby intros [].message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IM
Hin: indexHin ∈ equivocating_indices (enum index) s ∧ Hin ∈ enum index → Hin ∈ equivocating_indices (enum index) sby split; auto using elem_of_enum. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s: composite_state equivocator_IM
Hin: indexHin ∈ equivocating_indices (enum index) s → Hin ∈ equivocating_indices (enum index) s ∧ Hin ∈ enum indexmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold∀ s1 s2 : composite_state equivocator_IM, list_to_set (equivocating_indices (enum index) s1) ≡ list_to_set (equivocating_indices (enum index) s2) → equivocation_fault s1 = equivocation_fault s2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold∀ s1 s2 : composite_state equivocator_IM, list_to_set (equivocating_indices (enum index) s1) ≡ list_to_set (equivocating_indices (enum index) s2) → equivocation_fault s1 = equivocation_fault s2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq: list_to_set (equivocating_indices (enum index) s1) ≡ list_to_set (equivocating_indices (enum index) s2)equivocation_fault s1 = equivocation_fault s2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq: equivocating_validators s1 ≡ equivocating_validators s2equivocation_fault s1 = equivocation_fault s2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq: equivocating_validators s1 ≡ equivocating_validators s2sum_weights (equivocating_validators s1) = sum_weights (equivocating_validators s2)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq1: elements (equivocating_validators s1) ⊆ elements (equivocating_validators s2)
Heq2: elements (equivocating_validators s2) ⊆ elements (equivocating_validators s1)sum_weights (equivocating_validators s1) = sum_weights (equivocating_validators s2)by apply Rle_antisym. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq1: (sum_weights_list (elements (equivocating_validators s1)) <= sum_weights_list (elements (equivocating_validators s2)))%R
Heq2: (sum_weights_list (elements (equivocating_validators s2)) <= sum_weights_list (elements (equivocating_validators s1)))%Rsum_weights (equivocating_validators s1) = sum_weights (equivocating_validators s2)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold∀ s1 s2 : composite_state equivocator_IM, list_to_set (equivocating_indices (enum index) s1) ≡ list_to_set (equivocating_indices (enum index) s2) → equivocation_fault s1 = equivocation_fault s2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold∀ s1 s2 : composite_state equivocator_IM, list_to_set (equivocating_indices (enum index) s1) ≡ list_to_set (equivocating_indices (enum index) s2) → equivocation_fault s1 = equivocation_fault s2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq: list_to_set (equivocating_indices (enum index) s1) ≡ list_to_set (equivocating_indices (enum index) s2)equivocation_fault s1 = equivocation_fault s2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq: equivocating_validators s1 ≡ equivocating_validators s2equivocation_fault s1 = equivocation_fault s2by apply Rle_antisym; apply sum_weights_subseteq. Qed. End sec_equivocating_indices_BasicEquivocation.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
threshold: R
Ci: Type
Hm: Measurable index
H2: ElemOf index Ci
H3: Empty Ci
H4: Singleton index Ci
H5: Union Ci
H6: Intersection Ci
H7: Difference Ci
H8: Elements index Ci
EqDecision1: EqDecision index
H9: FinSet index Ci
H10: ReachableThreshold index Ci threshold
s1, s2: composite_state equivocator_IM
Heq1: equivocating_validators s1 ⊆ equivocating_validators s2
Heq2: equivocating_validators s2 ⊆ equivocating_validators s1equivocation_fault s1 = equivocation_fault s2
The statement below is obvious a transition cannot make an already equivocating
component non-equivocating.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)equivocating_indices index_listing s0 ⊆ equivocating_indices index_listing smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)equivocating_indices index_listing s0 ⊆ equivocating_indices index_listing smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hi: i ∈ equivocating_indices index_listing s0i ∈ equivocating_indices index_listing smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hi: i ∈ equivocating_indices index_listing s0is_equivocating_state (IM i) (s i) ∧ i ∈ index_listingmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hi: is_equivocating_state (IM i) (s0 i) ∧ i ∈ index_listingis_equivocating_state (IM i) (s i) ∧ i ∈ index_listingmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hi: is_equivocating_state (IM i) (s0 i) ∧ i ∈ index_listingis_equivocating_state (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hi: is_equivocating_state (IM i) (s0 i)is_equivocating_state (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hi: is_equivocating_state (IM i) (s0 i)
Hsi: is_singleton_state (IM i) (s i)Falsemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hi: is_equivocating_state (IM i) (s0 i)
Hsi: is_singleton_state (IM i) (s i)is_singleton_state (IM i) (s0 i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hsi: is_singleton_state (IM i) (s i)is_singleton_state (IM i) (s0 i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: composite_transition equivocator_IM l (s0, iom) = (s, oom)
i: index
Hsi: equivocator_state_n (s i) = 1equivocator_state_n (s0 i) = 1message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
l: composite_label equivocator_IM
s0: composite_state equivocator_IM
Ht: (let (i, li) := l in let (si', om') := equivocator_transition (IM i) li (s0 i, iom) in (state_update equivocator_IM s0 i si', om')) = (s, oom)
i: index
Hsi: equivocator_state_n (s i) = 1equivocator_state_n (s0 i) = 1message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
s: composite_state equivocator_IM
iom, oom: option message
j: index
lj: label (equivocator_IM j)
s0: composite_state equivocator_IM
Ht: (let (si', om') := equivocator_transition (IM j) lj (s0 j, iom) in (state_update equivocator_IM s0 j si', om')) = (s, oom)
i: index
Hsi: equivocator_state_n (s i) = 1equivocator_state_n (s0 i) = 1message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
iom, oom: option message
j: index
lj: label (equivocator_IM j)
s0: composite_state equivocator_IM
e: equivocator_state (IM j)
H2: equivocator_transition (IM j) lj (s0 j, iom) = (e, oom)
i: index
Hsi: equivocator_state_n (state_update equivocator_IM s0 j e i) = 1equivocator_state_n (s0 i) = 1by revert Hsi; apply equivocator_transition_reflects_singleton_state with iom oom lj. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
index_listing: list index
iom, oom: option message
j: index
lj: label (equivocator_IM j)
s0: composite_state equivocator_IM
e: equivocator_state (IM j)
H2: equivocator_transition (IM j) lj (s0 j, iom) = (e, oom)
Hsi: equivocator_state_n e = 1equivocator_state_n (s0 j) = 1message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
l: composite_label equivocator_IM
s: composite_state equivocator_IM
iom: option message
s': composite_state equivocator_IM
oom: option message
Ht: composite_transition equivocator_IM l (s, iom) = (s', oom)∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
l: composite_label equivocator_IM
s: composite_state equivocator_IM
iom: option message
s': composite_state equivocator_IM
oom: option message
Ht: composite_transition equivocator_IM l (s, iom) = (s', oom)∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
l: composite_label equivocator_IM
s: composite_state equivocator_IM
iom: option message
s': composite_state equivocator_IM
oom: option message
Ht: composite_transition equivocator_IM l (s, iom) = (s', oom)
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
j: index
lj: label (equivocator_IM j)
s: composite_state equivocator_IM
iom: option message
s': composite_state equivocator_IM
oom: option message
Ht: (let (si', om') := equivocator_transition (IM j) lj (s j, iom) in (state_update equivocator_IM s j si', om')) = (s', oom)
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
j: index
lj: label (equivocator_IM j)
s: composite_state equivocator_IM
iom: option message
s': composite_state equivocator_IM
oom: option message
sj': equivocator_state (IM j)
om': option message
Htj: equivocator_transition (IM j) lj (s j, iom) = (sj', om')
Ht: (state_update equivocator_IM s j sj', om') = (s', oom)
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
j: index
lj: label (equivocator_IM j)
s: composite_state equivocator_IM
iom: option message
s': composite_state equivocator_IM
oom: option message
sj': equivocator_state (IM j)
om': option message
Htj: equivocator_state_n (s j) ≤ equivocator_state_n sj'
Ht: (state_update equivocator_IM s j sj', om') = (s', oom)
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)by destruct (decide (j = eqv)); subst; state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
j: index
lj: label (equivocator_IM j)
s: composite_state equivocator_IM
iom, oom: option message
sj': equivocator_state (IM j)
Htj: equivocator_state_n (s j) ≤ equivocator_state_n sj'
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n (state_update equivocator_IM s j sj' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
plan: list (composite_plan_item equivocator_IM)
s':= (composite_apply_plan equivocator_IM s plan).2: state (composite_type equivocator_IM)∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
plan: list (composite_plan_item equivocator_IM)
s':= (composite_apply_plan equivocator_IM s plan).2: state (composite_type equivocator_IM)∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
plan: list (composite_plan_item equivocator_IM)
s':= (composite_apply_plan equivocator_IM s plan).2: state (composite_type equivocator_IM)
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
plan: list (composite_plan_item equivocator_IM)
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s plan).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s []).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
x: composite_plan_item equivocator_IM
plan: list (composite_plan_item equivocator_IM)
eqv: index
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s plan).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s (plan ++ [x])).2 eqv)by cbn; lia.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
eqv: indexequivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s []).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
x: composite_plan_item equivocator_IM
plan: list (composite_plan_item equivocator_IM)
eqv: index
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s plan).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s (plan ++ [x])).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
x: composite_plan_item equivocator_IM
plan: list (composite_plan_item equivocator_IM)
eqv: index
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((composite_apply_plan equivocator_IM s plan).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((let (aitems, afinal) := composite_apply_plan equivocator_IM s plan in let (a'items, a'final) := composite_apply_plan equivocator_IM afinal [x] in (aitems ++ a'items, a'final)).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
x: composite_plan_item equivocator_IM
plan: list (composite_plan_item equivocator_IM)
eqv: index
junk: list transition_item
s1: state (composite_type equivocator_IM)
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk, s1).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((let (a'items, a'final) := composite_apply_plan equivocator_IM s1 [x] in (junk ++ a'items, a'final)).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
l: label (composite_type equivocator_IM)
im: option message
plan: list (composite_plan_item equivocator_IM)
eqv: index
junk: list transition_item
s1: state (composite_type equivocator_IM)
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk, s1).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((let (a'items, a'final) := composite_apply_plan equivocator_IM s1 [{| label_a := l; input_a := im |}] in (junk ++ a'items, a'final)).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
l: label (composite_type equivocator_IM)
im: option message
plan: list (composite_plan_item equivocator_IM)
eqv: index
junk: list transition_item
s1: state (composite_type equivocator_IM)
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk, s1).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((let (a'items, a'final) := _apply_plan s1 [{| label_a := l; input_a := im |}] in (junk ++ a'items, a'final)).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
l: label (composite_type equivocator_IM)
im: option message
plan: list (composite_plan_item equivocator_IM)
eqv: index
junk: list transition_item
s1: state (composite_type equivocator_IM)
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk, s1).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((let (a'items, a'final) := let (final, items) := foldr _apply_plan_folder (s1, []) (rev [{| label_a := l; input_a := im |}]) in (rev items, final) in (junk ++ a'items, a'final)).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
l: label (composite_type equivocator_IM)
im: option message
plan: list (composite_plan_item equivocator_IM)
eqv: index
junk: list transition_item
s1: state (composite_type equivocator_IM)
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk, s1).2 eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((let (a'items, a'final) := let (final, items) := let (dest, out) := composite_transition equivocator_IM l (s1, im) in (dest, [{| l := l; input := im; destination := dest; output := out |}]) in (rev items, final) in (junk ++ a'items, a'final)).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
l: label (composite_type equivocator_IM)
im: option message
plan: list (composite_plan_item equivocator_IM)
eqv: index
junk: list transition_item
s1: state (composite_type equivocator_IM)
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk, s1).2 eqv)
c: composite_state equivocator_IM
o: option message
Htrans: composite_transition equivocator_IM l (s1, im) = (c, o)equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk ++ rev [{| l := l; input := im; destination := c; output := o |}], c).2 eqv)by cbn in *; lia. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s: composite_state equivocator_IM
l: label (composite_type equivocator_IM)
im: option message
plan: list (composite_plan_item equivocator_IM)
eqv: index
junk: list transition_item
s1: state (composite_type equivocator_IM)
IHplan: equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk, s1).2 eqv)
c: composite_state equivocator_IM
o: option message
Htrans: equivocator_state_n (s1 eqv) ≤ equivocator_state_n (c eqv)equivocator_state_n (s eqv) ≤ equivocator_state_n ((junk ++ rev [{| l := l; input := im; destination := c; output := o |}], c).2 eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: finite_constrained_trace_from_to (free_composite_vlsm equivocator_IM) s s' tr∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: finite_constrained_trace_from_to (free_composite_vlsm equivocator_IM) s s' tr∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: apply_plan (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM)) s (trace_to_plan (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM)) tr) = (tr, s')∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)by replace (composite_apply_plan _ _ _) with (tr, s') in Hmon. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: apply_plan (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM)) s (trace_to_plan (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM)) tr) = (tr, s')
Hmon: ∀ (s' := (composite_apply_plan equivocator_IM s (trace_to_plan (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM)) tr)).2) (eqv : index), equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)∀ eqv : index, equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: finite_constrained_trace_from_to (free_composite_vlsm equivocator_IM) s s' tr∀ eqv : index, is_equivocating_state (IM eqv) (s eqv) → is_equivocating_state (IM eqv) (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: finite_constrained_trace_from_to (free_composite_vlsm equivocator_IM) s s' tr∀ eqv : index, is_equivocating_state (IM eqv) (s eqv) → is_equivocating_state (IM eqv) (s' eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: finite_constrained_trace_from_to (free_composite_vlsm equivocator_IM) s s' tr∀ eqv : index, equivocator_state_n (s eqv) ≠ 1 → equivocator_state_n (s' eqv) ≠ 1message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
Htr: finite_constrained_trace_from_to (free_composite_vlsm equivocator_IM) s s' tr
eqv: index
Hseqv: equivocator_state_n (s eqv) ≠ 1equivocator_state_n (s' eqv) ≠ 1by cbv in *; lia. Qed. Context (equivocators_free_vlsm := free_composite_vlsm equivocator_IM) . Definition equivocators_no_equivocations_constraint := no_equivocations_additional_constraint equivocator_IM (free_constraint equivocator_IM). Definition equivocators_no_equivocations_vlsm : VLSM message := composite_vlsm equivocator_IM equivocators_no_equivocations_constraint.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
s, s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm equivocator_IM))
tr: list transition_item
eqv: index
Htr: equivocator_state_n (s eqv) ≤ equivocator_state_n (s' eqv)
Hseqv: equivocator_state_n (s eqv) ≠ 1equivocator_state_n (s' eqv) ≠ 1message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageVLSM_incl equivocators_no_equivocations_vlsm equivocators_free_vlsmmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageVLSM_incl equivocators_no_equivocations_vlsm equivocators_free_vlsmmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messagestrong_incl_initial_state_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageweak_incl_initial_message_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageweak_incl_valid_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageweak_incl_transition_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)by cbv; intros s Hn n; specialize (Hn n); split_and!; itauto.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messagestrong_incl_initial_state_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)by intro; intros; apply initial_message_is_valid.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageweak_incl_initial_message_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)by intros l s om Hiv _ _; apply Hiv.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageweak_incl_valid_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)by destruct 1. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageweak_incl_transition_preservation (constrained_vlsm_machine (free_composite_vlsm equivocator_IM) equivocators_no_equivocations_constraint) (free_composite_vlsm_machine equivocator_IM)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageVLSM_incl (preloaded_with_all_messages_vlsm equivocators_no_equivocations_vlsm) (preloaded_with_all_messages_vlsm equivocators_free_vlsm)by apply basic_VLSM_incl_preloaded; [intro | inversion 1 | intro]. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageVLSM_incl (preloaded_with_all_messages_vlsm equivocators_no_equivocations_vlsm) (preloaded_with_all_messages_vlsm equivocators_free_vlsm)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
is: composite_state equivocator_IM
His: composite_initial_state_prop equivocator_IM is
eqv: indexequivocator_state_n (is eqv) = 1by destruct (His eqv). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
is: composite_state equivocator_IM
His: composite_initial_state_prop equivocator_IM is
eqv: indexequivocator_state_n (is eqv) = 1
An indexed set of MachineDescriptors, one for each equivocating machine in
the composition.
This will be used to project composite_states and composite_transition_items
from the composition of equivocators to the composition of their corresponding
components.
Definition equivocator_descriptors : Type := forall (eqv : index), MachineDescriptor (IM eqv).
Generalizes the proper_descriptor definition to equivocator_descriptors.
Basically, an indexed set is proper w.r.t. a composite_state one can obtain
through it a valid projection of the composite_state to the non-equivocating
universe.
Definition proper_equivocator_descriptors
(eqv_descriptors : equivocator_descriptors)
(s : state equivocators_free_vlsm)
: Prop
:= forall
(eqv : index),
proper_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv).
Same as above, but disallowing equivocation.
Definition not_equivocating_equivocator_descriptors (eqv_descriptors : equivocator_descriptors) (s : state equivocators_free_vlsm) : Prop := forall (eqv : index), existing_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageRelDecision not_equivocating_equivocator_descriptorsmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM messageRelDecision not_equivocating_equivocator_descriptorsmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsmDecision (not_equivocating_equivocator_descriptors eqv_descriptors s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsmForall (λ eqv : index, existing_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)) (enum index) ↔ not_equivocating_equivocator_descriptors eqv_descriptors smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsmDecision (Forall (λ eqv : index, existing_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)) (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsmForall (λ eqv : index, existing_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)) (enum index) ↔ not_equivocating_equivocator_descriptors eqv_descriptors smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm(∀ x : index, x ∈ enum index → existing_descriptor (IM x) (eqv_descriptors x) (s x)) ↔ not_equivocating_equivocator_descriptors eqv_descriptors smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm∀ x : index, (x ∈ enum index → existing_descriptor (IM x) (eqv_descriptors x) (s x)) ↔ existing_descriptor (IM x) (eqv_descriptors x) (s x)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
x: index(x ∈ enum index → existing_descriptor (IM x) (eqv_descriptors x) (s x)) ↔ existing_descriptor (IM x) (eqv_descriptors x) (s x)by intro Henum; apply Henum, elem_of_enum.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
x: index(x ∈ enum index → existing_descriptor (IM x) (eqv_descriptors x) (s x)) → existing_descriptor (IM x) (eqv_descriptors x) (s x)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsmDecision (Forall (λ eqv : index, existing_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)) (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm∀ x : index, Decision (existing_descriptor (IM x) (eqv_descriptors x) (s x))by apply existing_descriptor_dec. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: indexDecision (existing_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
Hne: not_equivocating_equivocator_descriptors eqv_descriptors sproper_equivocator_descriptors eqv_descriptors sby intro eqv; apply existing_descriptor_proper, Hne. Qed. Definition zero_descriptor (eqv : index) : MachineDescriptor (IM eqv) := Existing 0.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
Hne: not_equivocating_equivocator_descriptors eqv_descriptors sproper_equivocator_descriptors eqv_descriptors smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state equivocators_free_vlsmnot_equivocating_equivocator_descriptors zero_descriptor sby intro eqv; eexists. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state equivocators_free_vlsmnot_equivocating_equivocator_descriptors zero_descriptor smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state equivocators_free_vlsmproper_equivocator_descriptors zero_descriptor smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state equivocators_free_vlsmproper_equivocator_descriptors zero_descriptor sby apply zero_descriptor_not_equivocating. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state equivocators_free_vlsmnot_equivocating_equivocator_descriptors zero_descriptor smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
si: state (equivocator_IM eqv)
Hsi_proper: proper_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)
Hproper: proper_equivocator_descriptors eqv_descriptors (state_update equivocator_IM s eqv si)proper_equivocator_descriptors eqv_descriptors smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
si: state (equivocator_IM eqv)
Hsi_proper: proper_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)
Hproper: proper_equivocator_descriptors eqv_descriptors (state_update equivocator_IM s eqv si)proper_equivocator_descriptors eqv_descriptors smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
si: state (equivocator_IM eqv)
Hsi_proper: proper_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)
Hproper: proper_equivocator_descriptors eqv_descriptors (state_update equivocator_IM s eqv si)
eqv': indexproper_descriptor (IM eqv') (eqv_descriptors eqv') (s eqv')by destruct (decide (eqv = eqv')); subst; state_update_simpl. Qed. Definition equivocators_state_project (eqv_descriptors : equivocator_descriptors) (s : state equivocators_free_vlsm) : state Free := fun (eqv : index) => equivocator_state_descriptor_project (s eqv) (eqv_descriptors eqv). Definition lift_to_equivocators_state (s : state Free) (eqv : index) : state (equivocator_IM eqv) := mk_singleton_state _ (s eqv).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
si: state (equivocator_IM eqv)
Hsi_proper: proper_descriptor (IM eqv) (eqv_descriptors eqv) (s eqv)
eqv': index
Hproper: proper_descriptor (IM eqv') (eqv_descriptors eqv') (state_update equivocator_IM s eqv si eqv')proper_descriptor (IM eqv') (eqv_descriptors eqv') (s eqv')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state Free
Hs: initial_state_prop sinitial_state_prop (lift_to_equivocators_state s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state Free
Hs: initial_state_prop sinitial_state_prop (lift_to_equivocators_state s)by intro i; specialize (Hs i). Qed. Definition newmachine_descriptors_list (index_listing : list index) (descriptors : equivocator_descriptors) : list index := @filter _ _ _ (fun i => is_newmachine_descriptor (IM i) (descriptors i)) (fun i => newmachine_descriptor_dec (IM i) (descriptors i)) index_listing.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: state Free
Hs: ∀ n : index, initial_state_prop (s n)∀ n : index, initial_state_prop (lift_to_equivocators_state s n)
A very useful operation on equivocator_descriptorss is updating the state corresponding
to a component.
Definition equivocator_descriptors_update
(s : equivocator_descriptors)
(i : index)
(si : MachineDescriptor (IM i))
(j : index)
: MachineDescriptor (IM j)
:=
match decide (j = i) with
| left e => eq_rect_r (fun i => MachineDescriptor (IM i)) si e
| _ => s j
end.
The next few results describe several properties of the
equivocator_descriptors_update operation.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
j: index
Hneq: j ≠ iequivocator_descriptors_update s i si j = s jby unfold equivocator_descriptors_update; case_decide. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
j: index
Hneq: j ≠ iequivocator_descriptors_update s i si j = s j
A generalized version of equivocator_descriptors_update_eq parametric on the
hypothesis equating the indices.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
j: index
Heq: j = iequivocator_descriptors_update s i si j = eq_rect_r (λ i : index, MachineDescriptor (IM i)) si Heqmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
j: index
Heq: j = iequivocator_descriptors_update s i si j = eq_rect_r (λ i : index, MachineDescriptor (IM i)) si Heqmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
j: index
Heq: j = imatch decide (j = i) with | left e => eq_rect_r (λ i : index, MachineDescriptor (IM i)) si e | right _ => s j end = eq_rect_r (λ i : index, MachineDescriptor (IM i)) si Heqby f_equal; apply Eqdep_dec.UIP_dec. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
j: index
Heq, H2: j = ieq_rect_r (λ i : index, MachineDescriptor (IM i)) si H2 = eq_rect_r (λ i : index, MachineDescriptor (IM i)) si Heqmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)equivocator_descriptors_update s i si i = siby rewrite equivocator_descriptors_update_eq_rew with (Heq := eq_refl). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)equivocator_descriptors_update s i si i = simessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
Heq: s i = siequivocator_descriptors_update s i si = smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
Heq: s i = siequivocator_descriptors_update s i si = smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
Heq: s i = si∀ x : index, equivocator_descriptors_update s i si x = s xmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si: MachineDescriptor (IM i)
Heq: s i = si
j: indexequivocator_descriptors_update s i si j = s jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: indexequivocator_descriptors_update s i (s i) i = s imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i, j: index
n: j ≠ iequivocator_descriptors_update s i (s i) j = s jby apply equivocator_descriptors_update_eq.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: indexequivocator_descriptors_update s i (s i) i = s iby apply equivocator_descriptors_update_neq. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i, j: index
n: j ≠ iequivocator_descriptors_update s i (s i) j = s jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)equivocator_descriptors_update (equivocator_descriptors_update s i si) i si' = equivocator_descriptors_update s i si'message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)equivocator_descriptors_update (equivocator_descriptors_update s i si) i si' = equivocator_descriptors_update s i si'message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)∀ x : index, equivocator_descriptors_update (equivocator_descriptors_update s i si) i si' x = equivocator_descriptors_update s i si' xmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)
j: indexequivocator_descriptors_update (equivocator_descriptors_update s i si) i si' j = equivocator_descriptors_update s i si' jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)equivocator_descriptors_update (equivocator_descriptors_update s i si) i si' i = equivocator_descriptors_update s i si' imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)
j: index
n: j ≠ iequivocator_descriptors_update (equivocator_descriptors_update s i si) i si' j = equivocator_descriptors_update s i si' jby rewrite equivocator_descriptors_update_eq, equivocator_descriptors_update_eq.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)equivocator_descriptors_update (equivocator_descriptors_update s i si) i si' i = equivocator_descriptors_update s i si' iby rewrite !equivocator_descriptors_update_neq. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
s: equivocator_descriptors
i: index
si, si': MachineDescriptor (IM i)
j: index
n: j ≠ iequivocator_descriptors_update (equivocator_descriptors_update s i si) i si' j = equivocator_descriptors_update s i si' jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
seqv: state (equivocator_IM eqv)let si := match eqv_descriptors eqv with | NewMachine sn => sn | Existing i => match equivocator_state_project seqv i with | Some si => si | None => equivocator_state_zero seqv end end in equivocators_state_project eqv_descriptors (state_update equivocator_IM s eqv seqv) = state_update IM (equivocators_state_project eqv_descriptors s) eqv simessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
seqv: state (equivocator_IM eqv)let si := match eqv_descriptors eqv with | NewMachine sn => sn | Existing i => match equivocator_state_project seqv i with | Some si => si | None => equivocator_state_zero seqv end end in equivocators_state_project eqv_descriptors (state_update equivocator_IM s eqv seqv) = state_update IM (equivocators_state_project eqv_descriptors s) eqv simessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
seqv: state (equivocator_IM eqv)
ieqv: indexequivocators_state_project eqv_descriptors (state_update equivocator_IM s eqv seqv) ieqv = state_update IM (equivocators_state_project eqv_descriptors s) eqv match eqv_descriptors eqv with | NewMachine sn => sn | Existing i => match equivocator_state_project seqv i with | Some si => si | None => equivocator_state_zero seqv end end ieqvby case_decide; subst. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
eqv_descriptors: equivocator_descriptors
s: state equivocators_free_vlsm
eqv: index
seqv: state (equivocator_IM eqv)
ieqv: indexequivocator_state_descriptor_project match decide (ieqv = eqv) with | left e => eq_rect_r (λ i : index, state (equivocator_IM i)) seqv e | right _ => s ieqv end (eqv_descriptors ieqv) = match decide (ieqv = eqv) with | left e => eq_rect_r (λ i : index, state (IM i)) match eqv_descriptors eqv with | NewMachine sn => sn | Existing i => match equivocator_state_project seqv i with | Some si => si | None => equivocator_state_zero seqv end end e | right _ => equivocator_state_descriptor_project (s ieqv) (eqv_descriptors ieqv) endmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
Hes: initial_state_prop es
eqv_descriptors: equivocator_descriptors
Heqv: proper_equivocator_descriptors eqv_descriptors esinitial_state_prop (equivocators_state_project eqv_descriptors es)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
Hes: initial_state_prop es
eqv_descriptors: equivocator_descriptors
Heqv: proper_equivocator_descriptors eqv_descriptors esinitial_state_prop (equivocators_state_project eqv_descriptors es)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
Hes: initial_state_prop es
eqv_descriptors: equivocator_descriptors
Heqv: proper_equivocator_descriptors eqv_descriptors es
eqv: indexinitial_state_prop (equivocators_state_project eqv_descriptors es eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
Heqv: proper_equivocator_descriptors eqv_descriptors esinitial_state_prop (equivocators_state_project eqv_descriptors es eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
Heqv: proper_equivocator_descriptors eqv_descriptors esinitial_state_prop (equivocators_state_project eqv_descriptors es eqv)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
Heqv: proper_equivocator_descriptors eqv_descriptors esinitial_state_prop (equivocator_state_descriptor_project (es eqv) (eqv_descriptors eqv))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
Heqv: proper_descriptor (IM eqv) (eqv_descriptors eqv) (es eqv)initial_state_prop (equivocator_state_descriptor_project (es eqv) (eqv_descriptors eqv))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
i: nat
Heqv: proper_descriptor (IM eqv) (Existing i) (es eqv)initial_state_prop (equivocator_state_descriptor_project (es eqv) (Existing i))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
i: nat
es_eqv_i: state (IM eqv)
Hes_eqv_i: equivocator_state_project (es eqv) i = Some es_eqv_iinitial_state_prop (equivocator_state_descriptor_project (es eqv) (Existing i))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
i: nat
es_eqv_i: state (IM eqv)
Hes_eqv_i: equivocator_state_project (es eqv) i = Some es_eqv_iinitial_state_prop (default (equivocator_state_zero (es eqv)) (equivocator_state_project (es eqv) i))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
i: nat
es_eqv_i: state (IM eqv)
Hes_eqv_i: equivocator_state_project (es eqv) i = Some es_eqv_iinitial_state_prop (default (equivocator_state_zero (es eqv)) (Some es_eqv_i))by eapply equivocator_vlsm_initial_state_preservation_rev. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
es: state equivocators_free_vlsm
eqv: index
Hes: initial_state_prop (es eqv)
eqv_descriptors: equivocator_descriptors
i: nat
es_eqv_i: state (IM eqv)
Hes_eqv_i: equivocator_state_project (es eqv) i = Some es_eqv_iinitial_state_prop es_eqv_imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
m: message
Hem: initial_message_prop minitial_message_prop mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
m: message
Hem: initial_message_prop minitial_message_prop mby exists eqv, emi. Qed. End sec_fully_equivocating_composition. #[export] Hint Rewrite @equivocator_descriptors_update_eq : state_update. #[export] Hint Rewrite @equivocator_descriptors_update_id using done : state_update. #[export] Hint Rewrite @equivocator_descriptors_update_neq using done : state_update. #[export] Hint Rewrite @equivocators_state_project_state_update_eqv using done : state_update. Section sec_equivocators_sub_projections. Context {message : Type} `{EqDecision index} (IM : index -> VLSM message) `{forall i, HasBeenSentCapability (IM i)} (equivocating : list index) (sub_equivocator_IM := sub_IM (equivocator_IM IM) equivocating) (sub_IM_equivocator := equivocator_IM (sub_IM IM equivocating)) . Definition seeded_equivocators_no_equivocation_vlsm (seed : message -> Prop) : VLSM message := composite_no_equivocation_vlsm_with_preloaded sub_equivocator_IM (free_constraint sub_equivocator_IM) seed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
equivocators_free_vlsm:= free_composite_vlsm equivocator_IM: VLSM message
m: message
eqv: index
emi: initial_message (equivocator_IM eqv)
Hem: `emi = minitial_message_prop mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
equivocating: list index
sub_equivocator_IM:= sub_IM (equivocator_IM IM) equivocating: sub_index equivocating → VLSM message
sub_IM_equivocator:= equivocator_IM (sub_IM IM equivocating): sub_index equivocating → VLSM message
is: composite_state sub_equivocator_IMcomposite_initial_state_prop sub_equivocator_IM is ↔ composite_initial_state_prop sub_IM_equivocator isdone. Qed. End sec_equivocators_sub_projections.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
equivocating: list index
sub_equivocator_IM:= sub_IM (equivocator_IM IM) equivocating: sub_index equivocating → VLSM message
sub_IM_equivocator:= equivocator_IM (sub_IM IM equivocating): sub_index equivocating → VLSM message
is: composite_state sub_equivocator_IMcomposite_initial_state_prop sub_equivocator_IM is ↔ composite_initial_state_prop sub_IM_equivocator is