From Coq Require Import Streams Rdefinitions. From stdpp Require Import prelude finite. From VLSM.Lib Require Import Preamble ListExtras StdppListSet StdppExtras. From VLSM.Lib Require Import ListSetExtras Measurable. From VLSM.Core Require Import VLSM VLSMProjections Composition ProjectionTraces Validator. From VLSM.Core Require Export PreloadedVLSM ConstrainedVLSM ReachableThreshold.
Core: VLSM Equivocation Definitions
Basic equivocation
state
s, and a set of validator
s,
which is Measurable and has a ReachableThreshold, we can define
BasicEquivocation starting from an is_equivocating relation
deciding whether a validator is equivocating in a state.
validator
s type.
Class BasicEquivocation (state validator Cv : Type) (threshold : R) {measurable_V : Measurable validator} `{ReachableThreshold validator Cv threshold} : Type := { is_equivocating (s : state) (v : validator) : Prop; is_equivocating_dec : RelDecision is_equivocating; (** retrieves a set containing all possible validators for a state *) state_validators (s : state) : Cv; (** all validators which are equivocating in a given composite state *) equivocating_validators (s : state) : Cv := filter (fun v => is_equivocating s v) (state_validators s); (** equivocation fault sum: the sum of the weights of equivocating validators *) equivocation_fault (s : state) : R := sum_weights (equivocating_validators s); not_heavy (s : state) : Prop := (equivocation_fault s <= threshold)%R }.st, validator, Cv: Type
threshold: R
measurable_V, Hm: Measurable validator
H: ElemOf validator Cv
H0: Empty Cv
H1: Singleton validator Cv
H2: Union Cv
H3: Intersection Cv
H4: Difference Cv
H5: Elements validator Cv
EqDecision0: EqDecision validator
H6: FinSet validator Cv
H7: ReachableThreshold validator Cv threshold
H8: BasicEquivocation st validator Cv threshold∀ s1 s2 : st, equivocating_validators s1 ≡ equivocating_validators s2 → equivocation_fault s1 = equivocation_fault s2by intros; apply sum_weights_proper. Qed.st, validator, Cv: Type
threshold: R
measurable_V, Hm: Measurable validator
H: ElemOf validator Cv
H0: Empty Cv
H1: Singleton validator Cv
H2: Union Cv
H3: Intersection Cv
H4: Difference Cv
H5: Elements validator Cv
EqDecision0: EqDecision validator
H6: FinSet validator Cv
H7: ReachableThreshold validator Cv threshold
H8: BasicEquivocation st validator Cv threshold∀ s1 s2 : st, equivocating_validators s1 ≡ equivocating_validators s2 → equivocation_fault s1 = equivocation_fault s2st, validator, Cv: Type
threshold: R
measurable_V, Hm: Measurable validator
H: ElemOf validator Cv
H0: Empty Cv
H1: Singleton validator Cv
H2: Union Cv
H3: Intersection Cv
H4: Difference Cv
H5: Elements validator Cv
EqDecision0: EqDecision validator
H6: FinSet validator Cv
H7: ReachableThreshold validator Cv threshold
Heqv: BasicEquivocation st validator Cv threshold
EqDecision1: EqDecision validator∀ s1 s2 : st, equivocating_validators s1 ⊆ equivocating_validators s2 → (equivocation_fault s1 <= equivocation_fault s2)%Rst, validator, Cv: Type
threshold: R
measurable_V, Hm: Measurable validator
H: ElemOf validator Cv
H0: Empty Cv
H1: Singleton validator Cv
H2: Union Cv
H3: Intersection Cv
H4: Difference Cv
H5: Elements validator Cv
EqDecision0: EqDecision validator
H6: FinSet validator Cv
H7: ReachableThreshold validator Cv threshold
Heqv: BasicEquivocation st validator Cv threshold
EqDecision1: EqDecision validator∀ s1 s2 : st, equivocating_validators s1 ⊆ equivocating_validators s2 → (equivocation_fault s1 <= equivocation_fault s2)%Rby apply sum_weights_subseteq. Qed.st, validator, Cv: Type
threshold: R
measurable_V, Hm: Measurable validator
H: ElemOf validator Cv
H0: Empty Cv
H1: Singleton validator Cv
H2: Union Cv
H3: Intersection Cv
H4: Difference Cv
H5: Elements validator Cv
EqDecision0: EqDecision validator
H6: FinSet validator Cv
H7: ReachableThreshold validator Cv threshold
Heqv: BasicEquivocation st validator Cv threshold
EqDecision1: EqDecision validator
s1, s2: st
H_incl: equivocating_validators s1 ⊆ equivocating_validators s2(equivocation_fault s1 <= equivocation_fault s2)%R
State-message oracles and endowing states with history
Section sec_simple. Context {message : Type} (vlsm : VLSM message) (pre_vlsm := preloaded_with_all_messages_vlsm vlsm) .
The following property detects equivocation in a given
trace for a given message.
Definition equivocation_in_trace (msg : message) (tr : list (transition_item vlsm)) : Prop := exists (prefix : list transition_item) (item : transition_item) (suffix : list transition_item), tr = prefix ++ item :: suffix /\ input item = Some msg /\ ~ trace_has_message (field_selector output) msg prefix.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision messageRelDecision equivocation_in_tracemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision messageRelDecision equivocation_in_tracemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_itemDecision (equivocation_in_trace msg tr)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_itemExists (λ d : list transition_item * transition_item * list transition_item, let (y, _) := d in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix) (one_element_decompositions tr) ↔ equivocation_in_trace msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_itemDecision (Exists (λ d : list transition_item * transition_item * list transition_item, let (y, _) := d in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix) (one_element_decompositions tr))message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_itemExists (λ d : list transition_item * transition_item * list transition_item, let (y, _) := d in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix) (one_element_decompositions tr) ↔ equivocation_in_trace msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_item(∃ x : list transition_item * transition_item * list transition_item, x ∈ one_element_decompositions tr ∧ (let (y, _) := x in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)) ↔ equivocation_in_trace msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_item(∃ x : list transition_item * transition_item * list transition_item, x ∈ one_element_decompositions tr ∧ (let (y, _) := x in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)) → equivocation_in_trace msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_itemequivocation_in_trace msg tr → ∃ x : list transition_item * transition_item * list transition_item, x ∈ one_element_decompositions tr ∧ (let (y, _) := x in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_item(∃ x : list transition_item * transition_item * list transition_item, x ∈ one_element_decompositions tr ∧ (let (y, _) := x in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)) → equivocation_in_trace msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_item
Hitem: (prefix, item, suffix) ∈ one_element_decompositions tr
Heqv: input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefixequivocation_in_trace msg trby apply elem_of_one_element_decompositions in Hitem.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_item
Hitem: (prefix, item, suffix) ∈ one_element_decompositions tr
Heqv: input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefixtr = prefix ++ item :: suffix ∧ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefixmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_itemequivocation_in_trace msg tr → ∃ x : list transition_item * transition_item * list transition_item, x ∈ one_element_decompositions tr ∧ (let (y, _) := x in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_item
Hitem: tr = prefix ++ item :: suffix
Heqv: input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix∃ x : list transition_item * transition_item * list transition_item, x ∈ one_element_decompositions tr ∧ (let (y, _) := x in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)by rewrite elem_of_one_element_decompositions.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_item
Hitem: tr = prefix ++ item :: suffix
Heqv: input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix(prefix, item, suffix) ∈ one_element_decompositions tr ∧ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefixmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_itemDecision (Exists (λ d : list transition_item * transition_item * list transition_item, let (y, _) := d in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix) (one_element_decompositions tr))message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr: list transition_item∀ x : list transition_item * transition_item * list transition_item, Decision (let (y, _) := x in let (prefix, item) := y in input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_itemDecision (input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_itemDecision (input item = Some msg)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_itemDecision (¬ trace_has_message (field_selector output) msg prefix)by apply option_eq_dec.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_itemDecision (input item = Some msg)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_itemDecision (¬ trace_has_message (field_selector output) msg prefix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_itemDecision (trace_has_message (field_selector output) msg prefix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_item∀ x : transition_item, Decision (field_selector output msg x)by apply option_eq_dec. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
EqDecision0: EqDecision message
msg: message
tr, prefix: list transition_item
item: transition_item
suffix: list transition_item
pitem: transition_itemDecision (field_selector output msg pitem)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
m: message¬ equivocation_in_trace m []message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
m: message¬ equivocation_in_trace m []by destruct prefix; inversion Hitem. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
m: message
prefix: list transition_item
suffix: transition_item
item: list transition_item
Hitem: [] = prefix ++ suffix :: itemFalsemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
prefix, suffix: list transition_itemequivocation_in_trace msg prefix → equivocation_in_trace msg (prefix ++ suffix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
prefix, suffix: list transition_itemequivocation_in_trace msg prefix → equivocation_in_trace msg (prefix ++ suffix)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
suffix, pre: list transition_item
item: transition_item
suf: list transition_item
Hinput: input item = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg preequivocation_in_trace msg ((pre ++ item :: suf) ++ suffix)by rewrite app_comm_cons, <- !app_assoc. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
suffix, pre: list transition_item
item: transition_item
suf: list transition_item
Hinput: input item = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg pre(pre ++ item :: suf) ++ suffix = pre ++ item :: suf ++ suffix ∧ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg premessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_itemequivocation_in_trace msg (tr ++ [item]) ↔ equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_itemequivocation_in_trace msg (tr ++ [item]) ↔ equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_itemequivocation_in_trace msg (tr ++ [item]) → equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_itemequivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg tr → equivocation_in_trace msg (tr ++ [item])message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_itemequivocation_in_trace msg (tr ++ [item]) → equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
prefix: list transition_item
item': transition_item
suffix: list transition_item
Heq_tr_item': tr ++ [item] = prefix ++ item' :: suffix
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefixequivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
prefix: list transition_item
item': transition_item
suffix: list transition_item
Heq_tr_item': tr ++ [item] = prefix ++ [item']
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefix
Heq_suffix: suffix = []equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
prefix: list transition_item
item': transition_item
suffix, suffix': list transition_item
_item: transition_item
Heq_tr_item': tr ++ [item] = prefix ++ item' :: suffix' ++ [_item]
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefix
Heq_suffix: suffix = suffix' ++ [_item]equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trby apply app_inj_tail in Heq_tr_item' as [-> ->]; right.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
prefix: list transition_item
item': transition_item
suffix: list transition_item
Heq_tr_item': tr ++ [item] = prefix ++ [item']
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefix
Heq_suffix: suffix = []equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
prefix: list transition_item
item': transition_item
suffix, suffix': list transition_item
_item: transition_item
Heq_tr_item': tr ++ [item] = prefix ++ item' :: suffix' ++ [_item]
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefix
Heq_suffix: suffix = suffix' ++ [_item]equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
prefix: list transition_item
item': transition_item
suffix, suffix': list transition_item
_item: transition_item
Heq_tr_item': tr ++ [item] = (prefix ++ item' :: suffix') ++ [_item]
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefix
Heq_suffix: suffix = suffix' ++ [_item]equivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg trby left; exists prefix, item', suffix'.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
prefix: list transition_item
item': transition_item
suffix, suffix': list transition_item
_item: transition_item
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefix
Heq_suffix: suffix = suffix' ++ [_item]equivocation_in_trace msg (prefix ++ item' :: suffix') ∨ input _item = Some msg ∧ ¬ trace_has_message (field_selector output) msg (prefix ++ item' :: suffix')message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_itemequivocation_in_trace msg tr ∨ input item = Some msg ∧ ¬ trace_has_message (field_selector output) msg tr → equivocation_in_trace msg (tr ++ [item])message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
item: transition_item
prefix: list transition_item
item': transition_item
suffix: list transition_item
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefixequivocation_in_trace msg ((prefix ++ item' :: suffix) ++ [item])message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
Hinput: input item = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg trequivocation_in_trace msg (tr ++ [item])message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
item: transition_item
prefix: list transition_item
item': transition_item
suffix: list transition_item
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefixequivocation_in_trace msg ((prefix ++ item' :: suffix) ++ [item])by rewrite <- app_assoc.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
item: transition_item
prefix: list transition_item
item': transition_item
suffix: list transition_item
Hinput: input item' = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg prefix(prefix ++ item' :: suffix) ++ [item] = prefix ++ item' :: suffix ++ [item] ∧ input item' = Some msg ∧ ¬ trace_has_message (field_selector output) msg prefixby exists tr, item, []. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
msg: message
tr: list transition_item
item: transition_item
Hinput: input item = Some msg
Hnoutput: ¬ trace_has_message (field_selector output) msg trequivocation_in_trace msg (tr ++ [item])
We intend to give define several message oracles: has_been_sent,
has_not_been_sent, has_been_received and has_not_been_received.
To avoid repetition, we give build some generic definitions first.
General signature of a message oracle
Definition state_message_oracle := state vlsm -> message -> Prop. Definition negate_oracle (o : state_message_oracle) : state_message_oracle := fun s m => ~ o s m. Definition specialized_selected_message_exists_in_all_traces (X : VLSM message) (message_selector : message -> transition_item -> Prop) (s : state X) (m : message) : Prop := forall (start : state X) (tr : list transition_item) (Htr : finite_valid_trace_init_to X start s tr), trace_has_message message_selector m tr. Definition selected_message_exists_in_all_preloaded_traces := specialized_selected_message_exists_in_all_traces pre_vlsm. Definition specialized_selected_message_exists_in_some_traces (X : VLSM message) (message_selector : message -> transition_item -> Prop) (s : state X) (m : message) : Prop := exists (start : state X) (tr : list transition_item) (Htr : finite_valid_trace_init_to X start s tr), trace_has_message message_selector m tr. Definition selected_message_exists_in_some_preloaded_traces : forall (message_selector : message -> transition_item -> Prop) (s : state pre_vlsm) (m : message), Prop := specialized_selected_message_exists_in_some_traces pre_vlsm. Definition specialized_selected_message_exists_in_no_trace (X : VLSM message) (message_selector : message -> transition_item -> Prop) (s : state X) (m : message) : Prop := forall (start : state X) (tr : list transition_item) (Htr : finite_valid_trace_init_to X start s tr), ~ trace_has_message message_selector m tr. Definition selected_message_exists_in_no_preloaded_trace := specialized_selected_message_exists_in_no_trace pre_vlsm.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message¬ specialized_selected_message_exists_in_some_traces X message_selector s m ↔ specialized_selected_message_exists_in_no_trace X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message¬ specialized_selected_message_exists_in_some_traces X message_selector s m ↔ specialized_selected_message_exists_in_no_trace X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message¬ specialized_selected_message_exists_in_some_traces X message_selector s m → specialized_selected_message_exists_in_no_trace X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: messagespecialized_selected_message_exists_in_no_trace X message_selector s m → ¬ specialized_selected_message_exists_in_some_traces X message_selector s mby intros Hnot is tr Htr Hsend; apply Hnot; exists is, tr, Htr.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message¬ specialized_selected_message_exists_in_some_traces X message_selector s m → specialized_selected_message_exists_in_no_trace X message_selector s mby intros Hno (is & tr & Htr & Hsend); eapply Hno. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: messagespecialized_selected_message_exists_in_no_trace X message_selector s m → ¬ specialized_selected_message_exists_in_some_traces X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
message_selector: message → transition_item → Prop
s: state pre_vlsm
m: message¬ selected_message_exists_in_some_preloaded_traces message_selector s m ↔ selected_message_exists_in_no_preloaded_trace message_selector s mby apply selected_message_exists_not_some_iff_no. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
message_selector: message → transition_item → Prop
s: state pre_vlsm
m: message¬ selected_message_exists_in_some_preloaded_traces message_selector s m ↔ selected_message_exists_in_no_preloaded_trace message_selector s m
Sufficient condition for specialized_selected_message_exists_in_some_traces.
message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m trspecialized_selected_message_exists_in_some_traces X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m trspecialized_selected_message_exists_in_some_traces X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
Hstart: valid_state_prop X startspecialized_selected_message_exists_in_some_traces X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
Hstart: ∃ (is : state X) (tr : list transition_item), finite_valid_trace_init_to X is start trspecialized_selected_message_exists_in_some_traces X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
is: state X
tr': list transition_item
Htr': finite_valid_trace_init_to X is start tr'specialized_selected_message_exists_in_some_traces X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
is: state X
tr': list transition_item
Htr': finite_valid_trace_init_to X is start tr'finite_valid_trace_init_to X is s (tr' ++ tr)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
is: state X
tr': list transition_item
Htr': finite_valid_trace_init_to X is start tr'
H: finite_valid_trace_init_to X is s (tr' ++ tr)specialized_selected_message_exists_in_some_traces X message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
is: state X
tr': list transition_item
Htr': finite_valid_trace_init_to X is start tr'finite_valid_trace_init_to X is s (tr' ++ tr)by split; [apply finite_valid_trace_from_to_app with start |].message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
is: state X
tr': list transition_item
H: finite_valid_trace_from_to X is start tr'
H0: initial_state_prop isfinite_valid_trace_init_to X is s (tr' ++ tr)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
is: state X
tr': list transition_item
Htr': finite_valid_trace_init_to X is start tr'
H: finite_valid_trace_init_to X is s (tr' ++ tr)specialized_selected_message_exists_in_some_traces X message_selector s mby apply Exists_app; right. Qed. Definition selected_messages_consistency_prop (message_selector : message -> transition_item -> Prop) (s : state vlsm) (m : message) : Prop := selected_message_exists_in_some_preloaded_traces message_selector s m <-> selected_message_exists_in_all_preloaded_traces message_selector s m.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
X: VLSM message
message_selector: message → transition_item → Prop
s: state X
m: message
start: state X
tr: list transition_item
Htr: finite_valid_trace_from_to X start s tr
Hsome: trace_has_message message_selector m tr
is: state X
tr': list transition_item
Htr': finite_valid_trace_init_to X is start tr'
H: finite_valid_trace_init_to X is s (tr' ++ tr)trace_has_message message_selector m (tr' ++ tr)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state vlsm
Hs: initial_state_prop s
message_selector: message → transition_item → Prop
m: message¬ selected_message_exists_in_all_preloaded_traces message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state vlsm
Hs: initial_state_prop s
message_selector: message → transition_item → Prop
m: message¬ selected_message_exists_in_all_preloaded_traces message_selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state vlsm
Hs: initial_state_prop s
message_selector: message → transition_item → Prop
m: message
Hselected: selected_message_exists_in_all_preloaded_traces message_selector s mFalsemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state vlsm
Hs: initial_state_prop s
message_selector: message → transition_item → Prop
m: message
Hselected: selected_message_exists_in_all_preloaded_traces message_selector s m
Hps: constrained_state_prop vlsm sFalsemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state vlsm
Hs: initial_state_prop s
message_selector: message → transition_item → Prop
m: message
Hselected: selected_message_exists_in_all_preloaded_traces message_selector s m
Hps: constrained_state_prop vlsm s
Htr: finite_constrained_trace_init_to vlsm s s []Falsemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state vlsm
Hs: initial_state_prop s
message_selector: message → transition_item → Prop
m: message
Hselected: trace_has_message message_selector m []
Hps: constrained_state_prop vlsm s
Htr: finite_constrained_trace_init_to vlsm s s []Falseby rewrite Exists_nil in Hselected. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state vlsm
Hs: initial_state_prop s
message_selector: message → transition_item → Prop
m: message
Hselected: Exists (message_selector m) []
Hps: constrained_state_prop vlsm s
Htr: finite_constrained_trace_init_to vlsm s s []False
The oracle should check if all valid traces leading to the state contain the given message.
The message_selector argument checks whether a single transition contains the
message, and can be used to check for received messages or sent messages.
Notably, the traces we are considering are any traces valid in the preloaded
version of the target VLSM. This is because we want VLSMs to have oracles which
are valid irrespective of the composition they take part in. As we know,
the behaviors of the projection of a VLSM from a composition are all included
in the behaviors of the preloaded version of the VLSM.
It is impossible to define a correct oracle for a message_selector
if there is some valid state that has multiple histories, and some message
that is in some of those histories but not in others (according to the selector).
Definition all_traces_have_message_prop (message_selector : message -> transition_item -> Prop) (oracle : state_message_oracle) (s : state vlsm) (m : message) : Prop := oracle s m <-> selected_message_exists_in_all_preloaded_traces message_selector s m. Definition no_traces_have_message_prop (message_selector : message -> transition_item -> Prop) (oracle : state_message_oracle) (s : state vlsm) (m : message) : Prop := oracle s m <-> selected_message_exists_in_no_preloaded_trace message_selector s m. Record oracle_tracewise_props (message_selector : message -> transition_item -> Prop) (oracle : state_message_oracle) : Prop := { proper_oracle_holds : forall (s : state pre_vlsm) (Hs : constrained_state_prop vlsm s) (m : message), all_traces_have_message_prop message_selector oracle s m; proper_not_oracle_holds : forall (s : state pre_vlsm) (Hs : constrained_state_prop vlsm s) (m : message), no_traces_have_message_prop message_selector (negate_oracle oracle) s m; }.
Stepwise consistency properties for state_message_oracle
- oracle_no_inits is that the oracle cannot hold for any message in any initial state.
- oracle_step_update is that the oracle is coherent around a single
input_valid_transition:
- If the oracle holds for a message in the starting state, it must also hold for that message in the destination state.
- If the message_selector finds a message in the transition, the oracle must hold for that message in the destination state.
- If the oracle holds for a message in the destination, at least one of the above cases hold.
Record oracle_stepwise_props (message_selector : message -> transition_item -> Prop) (oracle : state_message_oracle) : Prop := { oracle_no_inits : forall (s : state vlsm), initial_state_prop vlsm s -> forall (m : message), ~ oracle s m; oracle_step_update : forall (l : label _) (s : state _) (im : option message) (s' : state _) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) -> forall (msg : message), oracle s' msg <-> message_selector msg {| l := l; input := im; destination := s'; output := om |} \/ oracle s msg; }.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s0, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_from_to vlsm s0 s tr∀ m : message, oracle s m ↔ trace_has_message selector m tr ∨ oracle s0 mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s0, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_from_to vlsm s0 s tr∀ m : message, oracle s m ↔ trace_has_message selector m tr ∨ oracle s0 mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
m: messageoracle s m ↔ Exists (selector m) [] ∨ oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s, f: state (preloaded_with_all_messages_vlsm vlsm)
tl: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) s f tl
s': state (preloaded_with_all_messages_vlsm vlsm)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s', iom) (s, oom)
IHHtr: ∀ m : message, oracle f m ↔ trace_has_message selector m tl ∨ oracle s m
m: messageoracle f m ↔ Exists (selector m) ({| l := l; input := iom; destination := s; output := oom |} :: tl) ∨ oracle s' mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
m: messageoracle s m ↔ Exists (selector m) [] ∨ oracle s mby itauto.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
m: messageoracle s m ↔ False ∨ oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s, f: state (preloaded_with_all_messages_vlsm vlsm)
tl: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) s f tl
s': state (preloaded_with_all_messages_vlsm vlsm)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s', iom) (s, oom)
IHHtr: ∀ m : message, oracle f m ↔ trace_has_message selector m tl ∨ oracle s m
m: messageoracle f m ↔ Exists (selector m) ({| l := l; input := iom; destination := s; output := oom |} :: tl) ∨ oracle s' mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s, f: state (preloaded_with_all_messages_vlsm vlsm)
tl: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) s f tl
s': state (preloaded_with_all_messages_vlsm vlsm)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s', iom) (s, oom)
IHHtr: ∀ m : message, oracle f m ↔ trace_has_message selector m tl ∨ oracle s m
m: messagetrace_has_message selector m tl ∨ oracle s m ↔ (selector m {| l := l; input := iom; destination := s; output := oom |} ∨ Exists (selector m) tl) ∨ oracle s' mby itauto. Qed. (* It would seem more flexible to take [m] after the other parameters, but [Htr] is placed last so that <<apply in>> an existing [finite_valid_trace_init_to] hypothesis works. *)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s, f: state (preloaded_with_all_messages_vlsm vlsm)
tl: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) s f tl
s': state (preloaded_with_all_messages_vlsm vlsm)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm vlsm)
m: message
Ht: oracle s m ↔ selector m {| l := l; input := iom; destination := s; output := oom |} ∨ oracle s' m
IHHtr: ∀ m : message, oracle f m ↔ trace_has_message selector m tl ∨ oracle s mtrace_has_message selector m tl ∨ oracle s m ↔ (selector m {| l := l; input := iom; destination := s; output := oom |} ∨ Exists (selector m) tl) ∨ oracle s' mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
m: message
s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm s0 s troracle s m ↔ trace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
m: message
s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm s0 s troracle s m ↔ trace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
m: message
s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm s0 s trtrace_has_message selector m tr ∨ oracle s0 m ↔ trace_has_message selector m trby itauto. Qed. (* TODO(wkolowski): make notation uniform accross the file. *)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
m: message
s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm s0 s tr
H: ¬ oracle s0 mtrace_has_message selector m tr ∨ oracle s0 m ↔ trace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
selector': message → transition_item → Prop
Heqv: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (item : transition_item), input_constrained_transition_item vlsm s item → ∀ m : message, selector m item ↔ selector' m itemoracle_stepwise_props selector' oraclemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
selector': message → transition_item → Prop
Heqv: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (item : transition_item), input_constrained_transition_item vlsm s item → ∀ m : message, selector m item ↔ selector' m itemoracle_stepwise_props selector' oraclemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Hinits: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ oracle s m
Hupdate: ∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msg
selector': message → transition_item → Prop
Heqv: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (item : transition_item), input_constrained_transition_item vlsm s item → ∀ m : message, selector m item ↔ selector' m itemoracle_stepwise_props selector' oracleby intros; rewrite Hupdate, Heqv. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Hinits: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ oracle s m
Hupdate: ∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msg
selector': message → transition_item → Prop
Heqv: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (item : transition_item), input_constrained_transition_item vlsm s item → ∀ m : message, selector m item ↔ selector' m item∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, oracle s' msg ↔ selector' msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracleoracle_tracewise_props selector oraclemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracleoracle_tracewise_props selector oraclemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageall_traces_have_message_prop selector oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageno_traces_have_message_prop selector (negate_oracle oracle) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageall_traces_have_message_prop selector oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageoracle s m ↔ (∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → trace_has_message selector m tr)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageoracle s m → ∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → trace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message(∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → trace_has_message selector m tr) → oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageoracle s m → ∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → trace_has_message selector m trby eapply (oracle_initial_trace_update Horacle).message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hholds: oracle s m
s0: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm s0 s trtrace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message(∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → trace_has_message selector m tr) → oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
start: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) start s tr
m: message(∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → trace_has_message selector m tr) → oracle s mby eapply oracle_initial_trace_update.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
start: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) start s tr
m: message
H: trace_has_message selector m troracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageno_traces_have_message_prop selector (negate_oracle oracle) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message¬ oracle s m ↔ (∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → ¬ trace_has_message selector m tr)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message¬ oracle s m → ∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → ¬ trace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message(∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → ¬ trace_has_message selector m tr) → ¬ oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message¬ oracle s m → ∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → ¬ trace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hclaim: ¬ oracle s m
start: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm start s tr¬ trace_has_message selector m trby eapply oracle_initial_trace_update.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
start: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm start s tr
Hclaim: trace_has_message selector m troracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message(∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → ¬ trace_has_message selector m tr) → ¬ oracle s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
start: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) start s tr
m: message(∀ (start : state pre_vlsm) (tr : list transition_item), finite_valid_trace_init_to pre_vlsm start s tr → ¬ trace_has_message selector m tr) → ¬ oracle s mby eapply (oracle_initial_trace_update Horacle). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle
Horacle: oracle_stepwise_props selector oracle
s: state pre_vlsm
start: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) start s tr
m: message
H: oracle s mtrace_has_message selector m tr
The most basic state_message_oracles just check whether the message is
- *sent* - is the output of the transition
- *received* - is the output of the transition
- *observed* - is either sent or received in the transition.
Definition has_been_sent_prop : state_message_oracle -> state vlsm -> message -> Prop := all_traces_have_message_prop (field_selector output). Definition has_not_been_sent_prop : state_message_oracle -> state vlsm -> message -> Prop := no_traces_have_message_prop (field_selector output). Definition has_been_received_prop : state_message_oracle -> state vlsm -> message -> Prop := all_traces_have_message_prop (field_selector input). Definition has_not_been_received_prop : state_message_oracle -> state vlsm -> message -> Prop := no_traces_have_message_prop (field_selector input).
Per the vocabulary of the official VLSM document, we say that VLSMs endowed
with a state_message_oracle for sent messages have the has_been_sent capability.
Capabilities for receiving messages are treated analogously, so we omit mentioning
them explicitly.
Notably, we also define the has_not_been_sent oracle, which decides if a message
has definitely not been sent, on any of the traces producing a current state.
Furthermore, we require a sent_excluded_middle property, which stipulates
that any argument to the oracle should return true in exactly one of
has_been_sent and has_not_been_sent.
Definition has_been_sent_stepwise_prop (has_been_sent_pred : state_message_oracle) : Prop := oracle_stepwise_props (field_selector output) has_been_sent_pred.Definition has_not_been_sent `{HasBeenSentCapability} : state_message_oracle := negate_oracle has_been_sent.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_sent s mexact (oracle_no_inits _ _ (has_been_sent_stepwise_props)). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent s' msg ↔ om = Some msg ∨ has_been_sent s msgexact (oracle_step_update _ _ has_been_sent_stepwise_props). Qed. Definition has_been_sent_tracewise_prop (has_been_sent_pred : state_message_oracle) : Prop := oracle_tracewise_props (field_selector output) has_been_sent_pred.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent s' msg ↔ om = Some msg ∨ has_been_sent s msgmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapabilityhas_been_sent_tracewise_prop has_been_sentby exact (oracle_trace_props_from_stepwise has_been_sent_stepwise_props). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapabilityhas_been_sent_tracewise_prop has_been_sentmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_been_sent_prop has_been_sent s mby intros; apply has_been_sent_tracewise_props. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_been_sent_prop has_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_not_been_sent_prop has_not_been_sent s mby intros; apply has_been_sent_tracewise_props. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_not_been_sent_prop has_not_been_sent s m
Reverse implication for 'selected_messages_consistency_prop' always holds.
message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
selector: message → transition_item → Prop
Hall: selected_message_exists_in_all_preloaded_traces selector s mselected_message_exists_in_some_preloaded_traces selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
selector: message → transition_item → Prop
Hall: selected_message_exists_in_all_preloaded_traces selector s mselected_message_exists_in_some_preloaded_traces selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state pre_vlsm
Hs: ∃ (is : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) is s tr
m: message
selector: message → transition_item → Prop
Hall: selected_message_exists_in_all_preloaded_traces selector s mselected_message_exists_in_some_preloaded_traces selector s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state pre_vlsm
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) is s tr
m: message
selector: message → transition_item → Prop
Hall: selected_message_exists_in_all_preloaded_traces selector s mselected_message_exists_in_some_preloaded_traces selector s mby apply (Hall _ _ Htr). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
s: state pre_vlsm
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) is s tr
m: message
selector: message → transition_item → Prop
Hall: selected_message_exists_in_all_preloaded_traces selector s mtrace_has_message selector m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageselected_message_exists_in_some_preloaded_traces (field_selector output) s m → selected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector output) s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector output) s m
Hsm: has_been_sent s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector output) s m
Hsm: ¬ has_been_sent s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mby apply proper_sent in Hsm.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector output) s m
Hsm: has_been_sent s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector output) s m
Hsm: ¬ has_been_sent s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector output) s m
Hsm: selected_message_exists_in_no_preloaded_trace (field_selector output) s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mby elim (Hsm _ _ Htr). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
is: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s tr
Hmsg: trace_has_message (field_selector output) m tr
Hsm: selected_message_exists_in_no_preloaded_trace (field_selector output) s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
Hsm: can_produce pre_vlsm s mhas_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
Hsm: can_produce pre_vlsm s mhas_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
Hsm: can_produce pre_vlsm s m
H0: constrained_state_prop vlsm shas_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
Hsm: can_produce pre_vlsm s m
H0: constrained_state_prop vlsm sselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
Hsm: can_produce pre_vlsm s m
H0: constrained_state_prop vlsm sselected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
Hsm: ∃ (is : state pre_vlsm) (tr : list transition_item) (item : transition_item), finite_valid_trace pre_vlsm is tr ∧ last_error tr = Some item ∧ destination item = s ∧ output item = Some m
H0: constrained_state_prop vlsm sselected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
is: state pre_vlsm
tr: list transition_item
lst_tr: transition_item
Htr: finite_valid_trace pre_vlsm is tr
Hlst: last_error tr = Some lst_tr
Hs: destination lst_tr = s
Hm: output lst_tr = Some m
H0: constrained_state_prop vlsm sselected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
is: state pre_vlsm
tr: list transition_item
lst_tr: transition_item
tr': list transition_item
_lst_tr: transition_item
Htr: finite_valid_trace pre_vlsm is (tr' ++ [_lst_tr])
Hlst: last_error (tr' ++ [_lst_tr]) = Some lst_tr
Hs: destination lst_tr = s
Hm: output lst_tr = Some m
H0: constrained_state_prop vlsm s
Heqtr: tr = tr' ++ [_lst_tr]selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
is: state pre_vlsm
tr: list transition_item
lst_tr: transition_item
tr': list transition_item
_lst_tr: transition_item
Htr: finite_valid_trace pre_vlsm is (tr' ++ [_lst_tr])
Hlst: Some _lst_tr = Some lst_tr
Hs: destination lst_tr = s
Hm: output lst_tr = Some m
H0: constrained_state_prop vlsm s
Heqtr: tr = tr' ++ [_lst_tr]selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
is: state pre_vlsm
tr: list transition_item
lst_tr: transition_item
tr': list transition_item
Htr: finite_valid_trace pre_vlsm is (tr' ++ [lst_tr])
Hs: destination lst_tr = s
Hm: output lst_tr = Some m
H0: constrained_state_prop vlsm s
Heqtr: tr = tr' ++ [lst_tr]selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
is: state pre_vlsm
tr: list transition_item
lst_tr: transition_item
tr': list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is (finite_trace_last is (tr' ++ [lst_tr])) (tr' ++ [lst_tr])
Hs: destination lst_tr = s
Hm: output lst_tr = Some m
H0: constrained_state_prop vlsm s
Heqtr: tr = tr' ++ [lst_tr]selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
is: state pre_vlsm
tr: list transition_item
lst_tr: transition_item
tr': list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s (tr' ++ [lst_tr])
Hs: destination lst_tr = s
Hm: output lst_tr = Some m
H0: constrained_state_prop vlsm s
Heqtr: tr = tr' ++ [lst_tr]selected_message_exists_in_some_preloaded_traces (field_selector output) s mby apply Exists_app; right; left. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state pre_vlsm
m: message
is: state pre_vlsm
tr: list transition_item
lst_tr: transition_item
tr': list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s (tr' ++ [lst_tr])
Hs: destination lst_tr = s
Hm: output lst_tr = Some m
H0: constrained_state_prop vlsm s
Heqtr: tr = tr' ++ [lst_tr]trace_has_message (field_selector output) m (tr' ++ [lst_tr])
Sufficient condition for proper_sent avoiding the
preloaded_with_all_messages_vlsm.
message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: valid_state_prop vlsm s
m: message
Hsome: specialized_selected_message_exists_in_some_traces vlsm (field_selector output) s mhas_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: valid_state_prop vlsm s
m: message
Hsome: specialized_selected_message_exists_in_some_traces vlsm (field_selector output) s mhas_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsome: specialized_selected_message_exists_in_some_traces vlsm (field_selector output) s mhas_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsome: specialized_selected_message_exists_in_some_traces vlsm (field_selector output) s m
Hpres: constrained_state_prop vlsm shas_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsome: specialized_selected_message_exists_in_some_traces vlsm (field_selector output) s m
Hpres: constrained_state_prop vlsm sselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsome: specialized_selected_message_exists_in_some_traces vlsm (field_selector output) s m
Hpres: constrained_state_prop vlsm s
Hcons: selected_messages_consistency_prop (field_selector output) s mselected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsome: specialized_selected_message_exists_in_some_traces vlsm (field_selector output) s m
Hpres: constrained_state_prop vlsm s
Hcons: selected_messages_consistency_prop (field_selector output) s mselected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
is: state vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to vlsm is s tr
Hsome: trace_has_message (field_selector output) m tr
Hpres: constrained_state_prop vlsm s
Hcons: selected_messages_consistency_prop (field_selector output) s mselected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
is: state vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to vlsm is s tr
Hsome: trace_has_message (field_selector output) m tr
Hpres: constrained_state_prop vlsm s
Hcons: selected_messages_consistency_prop (field_selector output) s m∃ _ : finite_valid_trace_init_to pre_vlsm is s tr, trace_has_message (field_selector output) m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
is: state vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to vlsm is s tr
Hsome: trace_has_message (field_selector output) m tr
Hpres: constrained_state_prop vlsm s
Hcons: selected_messages_consistency_prop (field_selector output) s mfinite_valid_trace_init_to pre_vlsm is s trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
is: state vlsm
tr: list transition_item
Hsome: trace_has_message (field_selector output) m tr
Hpres: constrained_state_prop vlsm s
Hcons: selected_messages_consistency_prop (field_selector output) s mfinite_valid_trace_init_to vlsm is s tr → finite_valid_trace_init_to pre_vlsm is s trmessage: Type
vlsm: VLSM message
s, is: state vlsm
tr: list transition_itemfinite_valid_trace_init_to vlsm is s tr → finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) is s trby apply VLSM_incl_finite_valid_trace_init_to, vlsm_incl_preloaded_with_all_messages_vlsm. Qed.message: Type
vlsm: VLSM message
T: VLSMType message
M: VLSMMachine T
s, is: state {| vlsm_type := T; vlsm_machine := M |}
tr: list transition_itemfinite_valid_trace_init_to {| vlsm_type := T; vlsm_machine := M |} is s tr → finite_valid_trace_init_to (preloaded_with_all_messages_vlsm {| vlsm_type := T; vlsm_machine := M |}) is s tr
proper_sent condition specialized to regular VLSM traces
(avoiding preloaded_with_all_messages_vlsm).
message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: valid_state_prop vlsm s
m: message
Hsm: has_been_sent s mspecialized_selected_message_exists_in_all_traces vlsm (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: valid_state_prop vlsm s
m: message
Hsm: has_been_sent s mspecialized_selected_message_exists_in_all_traces vlsm (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsm: has_been_sent s mspecialized_selected_message_exists_in_all_traces vlsm (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsm: has_been_sent s m
Hpres: constrained_state_prop vlsm sspecialized_selected_message_exists_in_all_traces vlsm (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsm: selected_message_exists_in_all_preloaded_traces (field_selector output) s m
Hpres: constrained_state_prop vlsm sspecialized_selected_message_exists_in_all_traces vlsm (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
Hsm: selected_message_exists_in_all_preloaded_traces (field_selector output) s m
Hpres: constrained_state_prop vlsm s
is: state vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to vlsm is s trtrace_has_message (field_selector output) m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
is: state vlsm
tr: list transition_item
Hsm: finite_valid_trace_init_to pre_vlsm is s tr → trace_has_message (field_selector output) m tr
Hpres: constrained_state_prop vlsm s
Htr: finite_valid_trace_init_to vlsm is s trtrace_has_message (field_selector output) m trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
is: state vlsm
tr: list transition_item
Hsm: finite_valid_trace_init_to pre_vlsm is s tr → trace_has_message (field_selector output) m tr
Hpres: constrained_state_prop vlsm s
Htr: finite_valid_trace_init_to vlsm is s trfinite_valid_trace_init_to pre_vlsm is s trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
_om: option message
Hs: valid_state_message_prop vlsm s _om
m: message
is: state vlsm
tr: list transition_item
Hsm: finite_valid_trace_init_to pre_vlsm is s tr → trace_has_message (field_selector output) m tr
Hpres: constrained_state_prop vlsm sfinite_valid_trace_init_to vlsm is s tr → finite_valid_trace_init_to pre_vlsm is s trmessage: Type
vlsm: VLSM message
s, is: state vlsm
tr: list transition_itemfinite_valid_trace_init_to vlsm is s tr → finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) is s trby apply VLSM_incl_finite_valid_trace_init_to, vlsm_incl_preloaded_with_all_messages_vlsm. Qed.message: Type
vlsm: VLSM message
T: VLSMType message
M: VLSMMachine T
s, is: state {| vlsm_type := T; vlsm_machine := M |}
tr: list transition_itemfinite_valid_trace_init_to {| vlsm_type := T; vlsm_machine := M |} is s tr → finite_valid_trace_init_to (preloaded_with_all_messages_vlsm {| vlsm_type := T; vlsm_machine := M |}) is s trmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_sent: state_message_oracle
has_been_sent_dec: RelDecision has_been_sent
s: state vlsm
m: message
proper_sent: has_been_sent_prop has_been_sent s m
has_not_been_sent:= λ (s : state vlsm) (m : message), ¬ has_been_sent s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector output) s mhas_not_been_sent_prop has_not_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_sent: state_message_oracle
has_been_sent_dec: RelDecision has_been_sent
s: state vlsm
m: message
proper_sent: has_been_sent_prop has_been_sent s m
has_not_been_sent:= λ (s : state vlsm) (m : message), ¬ has_been_sent s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector output) s mhas_not_been_sent_prop has_not_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_sent: state_message_oracle
has_been_sent_dec: RelDecision has_been_sent
s: state vlsm
m: message
proper_sent: has_been_sent_prop has_been_sent s m
has_not_been_sent:= λ (s : state vlsm) (m : message), ¬ has_been_sent s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector output) s mno_traces_have_message_prop (field_selector output) has_not_been_sent s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_sent: state_message_oracle
has_been_sent_dec: RelDecision has_been_sent
s: state vlsm
m: message
proper_sent: has_been_sent_prop has_been_sent s m
has_not_been_sent:= λ (s : state vlsm) (m : message), ¬ has_been_sent s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector output) s mhas_not_been_sent s m ↔ selected_message_exists_in_no_preloaded_trace (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_sent: state_message_oracle
has_been_sent_dec: RelDecision has_been_sent
s: state vlsm
m: message
proper_sent: has_been_sent_prop has_been_sent s m
has_not_been_sent:= λ (s : state vlsm) (m : message), ¬ has_been_sent s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector output) s m¬ has_been_sent s m ↔ selected_message_exists_in_no_preloaded_trace (field_selector output) s mby apply not_iff_compat, (iff_trans proper_sent). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_sent: state_message_oracle
has_been_sent_dec: RelDecision has_been_sent
s: state vlsm
m: message
proper_sent: has_been_sent_prop has_been_sent s m
has_not_been_sent:= λ (s : state vlsm) (m : message), ¬ has_been_sent s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector output) s m¬ has_been_sent s m ↔ ¬ selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → has_been_sent s msg → P smessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → has_been_sent s msg → P smessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm shas_been_sent s msg → P smessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
IHHs: has_been_sent s msg → P shas_been_sent s' msg → P s'message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
IHHs: has_been_sent s msg → P som' = Some msg ∨ has_been_sent s msg → P s'message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om: option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', Some msg)
IHHs: has_been_sent s msg → P sP s'message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
IHHs: has_been_sent s msg → P s
H_sent: has_been_sent s msgP s'by eapply send_establishes_P.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om: option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', Some msg)
IHHs: has_been_sent s msg → P sP s'by eapply P_stable, IHHs. Qed. Definition has_been_received_stepwise_prop (has_been_received_pred : state_message_oracle) : Prop := oracle_stepwise_props (field_selector input) has_been_received_pred.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
P: state vlsm → Prop
P_stable: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (oom : option message), input_constrained_transition vlsm l (s, oim) (s', oom) → P s → P s'
msg: message
send_establishes_P: ∀ (s : state (preloaded_with_all_messages_vlsm vlsm)) (l : label (preloaded_with_all_messages_vlsm vlsm)) (oim : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)), input_constrained_transition vlsm l (s, oim) (s', Some msg) → P s'
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
IHHs: has_been_sent s msg → P s
H_sent: has_been_sent s msgP s'Definition has_not_been_received `{HasBeenReceivedCapability} : state_message_oracle := negate_oracle has_been_received.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_received s mexact (oracle_no_inits _ _ has_been_received_stepwise_props). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_received s' msg ↔ im = Some msg ∨ has_been_received s msgexact (oracle_step_update _ _ has_been_received_stepwise_props). Qed. Definition has_been_received_tracewise_prop (has_been_received_pred : state_message_oracle) : Prop := oracle_tracewise_props (field_selector input) has_been_received_pred.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_received s' msg ↔ im = Some msg ∨ has_been_received s msgmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapabilityhas_been_received_tracewise_prop has_been_receivedby apply oracle_trace_props_from_stepwise, has_been_received_stepwise_props. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapabilityhas_been_received_tracewise_prop has_been_receivedmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_been_received_prop has_been_received s mby apply proper_oracle_holds, has_been_received_tracewise_props. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_been_received_prop has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_not_been_received_prop has_not_been_received s mby apply proper_not_oracle_holds, has_been_received_tracewise_props. Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability∀ s : state pre_vlsm, constrained_state_prop vlsm s → ∀ m : message, has_not_been_received_prop has_not_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: messageselected_message_exists_in_some_preloaded_traces (field_selector input) s m → selected_message_exists_in_all_preloaded_traces (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector input) s mselected_message_exists_in_all_preloaded_traces (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector input) s m
Hsm: ¬ has_been_received s mselected_message_exists_in_all_preloaded_traces (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces (field_selector input) s m
Hsm: selected_message_exists_in_no_preloaded_trace (field_selector input) s mselected_message_exists_in_all_preloaded_traces (field_selector input) s mby elim (Hsm _ _ Htr). Qed.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state pre_vlsm
Hs: constrained_state_prop vlsm s
m: message
is: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s tr
Hsome: trace_has_message (field_selector input) m tr
Hsm: selected_message_exists_in_no_preloaded_trace (field_selector input) s mselected_message_exists_in_all_preloaded_traces (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s mhas_not_been_received_prop has_not_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s mhas_not_been_received_prop has_not_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s mno_traces_have_message_prop (field_selector input) has_not_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s mhas_not_been_received s m ↔ selected_message_exists_in_no_preloaded_trace (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m¬ has_been_received s m ↔ selected_message_exists_in_no_preloaded_trace (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m¬ has_been_received s m → selected_message_exists_in_no_preloaded_trace (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s mselected_message_exists_in_no_preloaded_trace (field_selector input) s m → ¬ has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m¬ has_been_received s m → selected_message_exists_in_no_preloaded_trace (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hsm: ¬ has_been_received s m
is: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s tr
Hsome: trace_has_message (field_selector input) m trFalsemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hsm: ¬ has_been_received s m
is: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s tr
Hsome: trace_has_message (field_selector input) m tr
Hsm': selected_message_exists_in_some_preloaded_traces (field_selector input) s mFalseby apply proper_received in Hsm'.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hsm: ¬ has_been_received s m
is: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s tr
Hsome: trace_has_message (field_selector input) m tr
Hsm': selected_message_exists_in_all_preloaded_traces (field_selector input) s mFalsemessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s mselected_message_exists_in_no_preloaded_trace (field_selector input) s m → ¬ has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hnone: selected_message_exists_in_no_preloaded_trace (field_selector input) s m¬ has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hnone: selected_message_exists_in_no_preloaded_trace (field_selector input) s m
Hsm: has_been_received s m¬ has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hnone: selected_message_exists_in_no_preloaded_trace (field_selector input) s m
Hsm: selected_message_exists_in_all_preloaded_traces (field_selector input) s m¬ has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hnone: selected_message_exists_in_no_preloaded_trace (field_selector input) s m
Hsm: selected_message_exists_in_some_preloaded_traces (field_selector input) s m¬ has_been_received s mby elim (Hnone is tr Htr). Qed. Definition sent_messages (s : state vlsm) : Type := sig (fun m => selected_message_exists_in_some_preloaded_traces (field_selector output) s m).message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
has_been_received: state_message_oracle
has_been_received_dec: RelDecision has_been_received
s: state vlsm
m: message
proper_received: has_been_received_prop has_been_received s m
has_not_been_received:= λ (s : state vlsm) (m : message), ¬ has_been_received s m: state vlsm → message → Prop
Hconsistency: selected_messages_consistency_prop (field_selector input) s m
Hnone: selected_message_exists_in_no_preloaded_trace (field_selector input) s m
is: state pre_vlsm
tr: list transition_item
Htr: finite_valid_trace_init_to pre_vlsm is s tr
Hsm: trace_has_message (field_selector input) m tr¬ has_been_received s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_sent s m ↔ (∃ m' : sent_messages s, `m' = m)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_sent s m ↔ (∃ m' : sent_messages s, `m' = m)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_sent s m ↔ (∃ m' : {m : message | selected_message_exists_in_some_preloaded_traces (field_selector output) s m}, `m' = m)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_sent s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_sent_prop has_been_sent s mhas_been_sent s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_sent s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector output) s mhas_been_sent s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_sent s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector output) s mselected_message_exists_in_all_preloaded_traces (field_selector output) s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector output) s mby apply has_been_sent_consistency. Qed. Definition received_messages (s : state vlsm) : Type := sig (fun m => selected_message_exists_in_some_preloaded_traces (field_selector input) s m).message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenSentCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_sent s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector output) s mselected_message_exists_in_some_preloaded_traces (field_selector output) s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector output) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_received s m ↔ (∃ m' : received_messages s, `m' = m)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_received s m ↔ (∃ m' : received_messages s, `m' = m)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_received s m ↔ (∃ m' : {m : message | selected_message_exists_in_some_preloaded_traces (field_selector input) s m}, `m' = m)message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: messagehas_been_received s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_received_prop has_been_received s mhas_been_received s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_received s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector input) s mhas_been_received s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector input) s mmessage: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_received s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector input) s mselected_message_exists_in_all_preloaded_traces (field_selector input) s m ↔ selected_message_exists_in_some_preloaded_traces (field_selector input) s mby apply has_been_received_consistency. Qed. End sec_simple. Arguments oracle_stepwise_props {message} {vlsm} message_selector oracle. Arguments oracle_no_inits {message} {vlsm} {message_selector} {oracle}. Arguments oracle_step_update {message} {vlsm} {message_selector} {oracle}. Arguments has_been_sent_stepwise_prop {message} {vlsm} _. Arguments has_been_received_stepwise_prop {message} {vlsm} _. #[global] Hint Mode HasBeenSentCapability - ! : typeclass_instances. #[global] Hint Mode HasBeenReceivedCapability - ! : typeclass_instances. Arguments has_been_sent_stepwise_props {message} vlsm {_}. Arguments has_been_received_stepwise_props {message} vlsm {_}. Arguments has_been_sent_step_update {message} {vlsm H} [l s im s' om] _ msg. Arguments has_been_received_step_update {message} {vlsm H} [l s im s' om] _ msg.message: Type
vlsm: VLSM message
pre_vlsm:= preloaded_with_all_messages_vlsm vlsm: VLSM message
H: HasBeenReceivedCapability
s: state vlsm
Hs: constrained_state_prop vlsm s
m: message
Hbs: has_been_received s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector input) s mselected_message_exists_in_some_preloaded_traces (field_selector input) s m ↔ selected_message_exists_in_all_preloaded_traces (field_selector input) s m
Proving the trace properties from the stepwise properties
is based on oracle_initial_trace_update.
The theorems for all_traces_have_message_prop
and no_traces_have_message_prop are mostly rearranging
quantifiers to use this lemma, also using valid_state_has_trace
to choose a trace reaching the state when one is not given.
Section sec_trace_from_stepwise. Context (message : Type) (vlsm : VLSM message) (selector : message -> transition_item -> Prop) (oracle : state_message_oracle vlsm) (oracle_props : oracle_stepwise_props selector oracle) .message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageall_traces_have_message_prop vlsm selector oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageoracle s m ↔ selected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageoracle s m → selected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageselected_message_exists_in_all_preloaded_traces vlsm selector s m → oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageoracle s m → selected_message_exists_in_all_preloaded_traces vlsm selector s mby apply oracle_initial_trace_update.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: message
s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_itemfinite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) s0 s tr → oracle s m → trace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageselected_message_exists_in_all_preloaded_traces vlsm selector s m → oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: message
H_all_traces: selected_message_exists_in_all_preloaded_traces vlsm selector s moracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s, s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) s0 s tr
m: message
H_all_traces: selected_message_exists_in_all_preloaded_traces vlsm selector s moracle s mby apply H_all_traces in Htr. Qed.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s, s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) s0 s tr
m: message
H_all_traces: selected_message_exists_in_all_preloaded_traces vlsm selector s mtrace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (s0 : state vlsm) (m0 : message), ¬ oracle s0 m0) s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (s0 : state vlsm) (m0 : message), ¬ oracle s0 m0) s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageno_traces_have_message_prop vlsm selector (λ (s : state vlsm) (m : message), ¬ oracle s m) s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: message¬ oracle s m → selected_message_exists_in_no_preloaded_trace vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageselected_message_exists_in_no_preloaded_trace vlsm selector s m → ¬ oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: message¬ oracle s m → selected_message_exists_in_no_preloaded_trace vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: message
H_not_holds: ¬ oracle s m
start: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) start s tr¬ trace_has_message selector m trby eapply oracle_initial_trace_update.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: message
start: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) start s tr
H_not_holds: trace_has_message selector m troracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: messageselected_message_exists_in_no_preloaded_trace vlsm selector s m → ¬ oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hproto: constrained_state_prop vlsm s
m: message
H_no_traces: selected_message_exists_in_no_preloaded_trace vlsm selector s m
H_oracle: oracle s mFalsemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s, s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) s0 s tr
m: message
H_no_traces: selected_message_exists_in_no_preloaded_trace vlsm selector s m
H_oracle: oracle s mFalseby rewrite <- oracle_initial_trace_update. Qed.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s, s0: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) s0 s tr
m: message
H_no_traces: selected_message_exists_in_no_preloaded_trace vlsm selector s m
H_oracle: oracle s mtrace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messageselected_message_exists_in_some_preloaded_traces vlsm selector s m → selected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm selector s mselected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm selector s m
Hsm: oracle s mselected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm selector s m
Hsm: ¬ oracle s mselected_message_exists_in_all_preloaded_traces vlsm selector s mby apply prove_all_have_message_from_stepwise in Hsm.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm selector s m
Hsm: oracle s mselected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm selector s m
Hsm: ¬ oracle s mselected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm selector s m
Hsm: selected_message_exists_in_no_preloaded_trace vlsm selector s mselected_message_exists_in_all_preloaded_traces vlsm selector s mby elim (Hsm _ _ Htr). Qed.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
oracle_dec: RelDecision oracle
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) is s tr
Hmsg: trace_has_message selector m tr
Hsm: selected_message_exists_in_no_preloaded_trace vlsm selector s mselected_message_exists_in_all_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle∀ s1 s2 : state (preloaded_with_all_messages_vlsm vlsm), in_futures (preloaded_with_all_messages_vlsm vlsm) s1 s2 → ∀ m : message, oracle s1 m → oracle s2 mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle∀ s1 s2 : state (preloaded_with_all_messages_vlsm vlsm), in_futures (preloaded_with_all_messages_vlsm vlsm) s1 s2 → ∀ m : message, oracle s1 m → oracle s2 mby eapply oracle_partial_trace_update; [| | right]. Qed. End sec_trace_from_stepwise.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_props: oracle_stepwise_props selector oracle
s1, s2: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) s1 s2 tr
m: message
Hs1m: oracle s1 moracle s2 m
The stepwise properties are proven from the trace properties
by considering the empty trace to prove the oracle_no_inits
property, and by considering a trace that ends with the given
input_valid_transition to prove the oracle_step_update property.
Section sec_stepwise_from_trace. Context (message : Type) (vlsm : VLSM message) (selector : message -> transition_item -> Prop) (oracle : state_message_oracle vlsm) (oracle_dec : RelDecision oracle) (Horacle_all_have : forall s (Hs : constrained_state_prop vlsm s) m, all_traces_have_message_prop vlsm selector oracle s m) (Hnot_oracle_none_have : forall s (Hs : constrained_state_prop vlsm s) m, no_traces_have_message_prop vlsm selector (fun m s => ~ oracle m s) s m).message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
s: state vlsm
Hinit: initial_state_prop s
m: message
Horacle: oracle s mFalsemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
s: state vlsm
Hinit: initial_state_prop s
m: message
Horacle: oracle s m
Hproto: constrained_state_prop vlsm sFalsemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
s: state vlsm
Hinit: initial_state_prop s
m: message
Horacle: selected_message_exists_in_all_preloaded_traces vlsm selector s m
Hproto: constrained_state_prop vlsm sFalsemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
s: state vlsm
Hinit: initial_state_prop s
m: message
Horacle: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) s s [] → trace_has_message selector m []
Hproto: constrained_state_prop vlsm sFalseby split; [constructor |]. Qed.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
s: state vlsm
Hinit: initial_state_prop s
m: message
Hproto: constrained_state_prop vlsm sfinite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) s s []message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, oracle s m ↔ trace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, oracle s m ↔ trace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: messageoracle s m ↔ trace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm soracle s m ↔ trace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm soracle s m → trace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm strace_has_message selector m tr → oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm soracle s m → trace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Horacle: oracle s mtrace_has_message selector m trby specialize (Horacle is tr Htr).message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Horacle: selected_message_exists_in_all_preloaded_traces vlsm selector s mtrace_has_message selector m trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm strace_has_message selector m tr → oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Hexists: trace_has_message selector m troracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Hexists: trace_has_message selector m tr¬ ¬ oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Hexists: trace_has_message selector m tr
Hnot: ¬ oracle s mFalsemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Hexists: trace_has_message selector m tr
Hnot: selected_message_exists_in_no_preloaded_trace vlsm selector s mFalsemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Hexists: trace_has_message selector m tr
Hnot: ¬ selected_message_exists_in_some_preloaded_traces vlsm selector s mFalseby exists is, tr, Htr. Qed.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
m: message
H: constrained_state_prop vlsm s
Hexists: trace_has_message selector m tr
Hnot: ¬ selected_message_exists_in_some_preloaded_traces vlsm selector s mselected_message_exists_in_some_preloaded_traces vlsm selector s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Htrans: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messageoracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Htrans': input_constrained_transition vlsm l ( s, im) (s', om)
msg: messageoracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Htrans': input_constrained_transition vlsm l ( s, im) (s', om)
msg: message
Hproto_s: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
Hproto_m: option_valid_message_prop (preloaded_with_all_messages_vlsm vlsm) im
Hvalid: valid l (s, im)
Htrans: transition l (s, im) = (s', om)oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Htrans': input_constrained_transition vlsm l ( s, im) (s', om)
msg: message
Hproto_s: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
Hproto_m: option_valid_message_prop (preloaded_with_all_messages_vlsm vlsm) im
Hvalid: valid l (s, im)
Htrans: transition l (s, im) = (s', om)
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) is s tr
Hinit: initial_state_prop isoracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Htrans': input_constrained_transition vlsm l ( s, im) (s', om)
msg: message
Hproto_s: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
Hproto_m: option_valid_message_prop (preloaded_with_all_messages_vlsm vlsm) im
Hvalid: valid l (s, im)
Htrans: transition l (s, im) = (s', om)
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) is s tr
Hinit: initial_state_prop is
Htr': finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) is s' (tr ++ [{| l := l; input := im; destination := s'; output := om |}])oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Htrans': input_constrained_transition vlsm l ( s, im) (s', om)
msg: message
Hproto_s: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
Hproto_m: option_valid_message_prop (preloaded_with_all_messages_vlsm vlsm) im
Hvalid: valid l (s, im)
Htrans: transition l (s, im) = (s', om)
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) is s tr
Hinit: initial_state_prop is
Htr': finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) is s' (tr ++ [{| l := l; input := im; destination := s'; output := om |}])oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ trace_has_message selector msg trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Htrans': input_constrained_transition vlsm l ( s, im) (s', om)
msg: message
Hproto_s: valid_state_prop (preloaded_with_all_messages_vlsm vlsm) s
Hproto_m: option_valid_message_prop (preloaded_with_all_messages_vlsm vlsm) im
Hvalid: valid l (s, im)
Htrans: transition l (s, im) = (s', om)
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) is s tr
Hinit: initial_state_prop is
Htr': finite_valid_trace_from_to (preloaded_with_all_messages_vlsm vlsm) is s' (tr ++ [{| l := l; input := im; destination := s'; output := om |}])trace_has_message selector msg (tr ++ [{| l := l; input := im; destination := s'; output := om |}]) ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ trace_has_message selector msg trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
l: label (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
msg: message
tr: list transition_itemtrace_has_message selector msg (tr ++ [{| l := l; input := im; destination := s'; output := om |}]) ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ trace_has_message selector msg trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
l: label (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
msg: message
tr: list transition_itemtrace_has_message selector msg (tr ++ [{| l := l; input := im; destination := s'; output := om |}]) ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ trace_has_message selector msg trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
l: label (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
msg: message
tr: list transition_itemExists (selector msg) (tr ++ [{| l := l; input := im; destination := s'; output := om |}]) ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ Exists (selector msg) trby itauto. Qed.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
l: label (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
msg: message
tr: list transition_itemExists (selector msg) tr ∨ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ False ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ Exists (selector msg) trmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s moracle_stepwise_props selector oraclemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s moracle_stepwise_props selector oraclemessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ oracle s mmessage: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msgby apply oracle_no_inits_from_trace.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ oracle s mby apply oracle_step_property_from_trace. Defined. End sec_stepwise_from_trace.message: Type
vlsm: VLSM message
selector: message → transition_item → Prop
oracle: state_message_oracle vlsm
oracle_dec: RelDecision oracle
Horacle_all_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm selector oracle s m
Hnot_oracle_none_have: ∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm selector (λ (m0 : state vlsm) (s0 : message), ¬ oracle m0 s0) s m∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, oracle s' msg ↔ selector msg {| l := l; input := im; destination := s'; output := om |} ∨ oracle s msg
Stepwise view of HasBeenSentCapability
message_selector
.
(* TODO - move up with HasBeenSent *)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM messagehas_been_sent_stepwise_prop (has_been_sent vlsm)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM messagehas_been_sent_stepwise_prop (has_been_sent vlsm)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_sent vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent vlsm s' msg ↔ om = Some msg ∨ has_been_sent vlsm s msghas_been_sent_stepwise_prop (has_been_sent vlsm)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_sent vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent vlsm s' msg ↔ om = Some msg ∨ has_been_sent vlsm s msg∀ (l : label (preloaded_with_all_messages_vlsm X)) (s : state (preloaded_with_all_messages_vlsm X)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm X)) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_sent vlsm s' msg ↔ field_selector output msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_sent vlsm s msgmessage: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_sent vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent vlsm s' msg ↔ om = Some msg ∨ has_been_sent vlsm s msg
l: label vlsm
s: state vlsm
im: option message
s': state vlsm
om: option message
H0: input_constrained_transition X l (s, im) (s', om)
msg: messagehas_been_sent vlsm s' msg ↔ om = Some msg ∨ has_been_sent vlsm s msgby apply basic_VLSM_strong_incl; do 2 red; cbn; itauto. Qed.message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_sent vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent vlsm s' msg ↔ om = Some msg ∨ has_been_sent vlsm s msg
l: label vlsm
s: state vlsm
im: option message
s': state vlsm
om: option message
H0: input_constrained_transition X l (s, im) (s', om)
msg: messageVLSM_incl_part (preloaded_vlsm_machine X (λ _ : message, True)) (preloaded_vlsm_machine vlsm (λ _ : message, True))message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → PropHasBeenSentCapability (preloaded_vlsm vlsm seed)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → PropHasBeenSentCapability (preloaded_vlsm vlsm seed)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → PropRelDecision ?has_been_sentmessage: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prophas_been_sent_stepwise_prop ?has_been_sentby apply (has_been_sent_dec vlsm).message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → PropRelDecision ?has_been_sentby apply preloaded_has_been_sent_stepwise_props. Defined.message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm
seed: message → Prophas_been_sent_stepwise_prop (has_been_sent vlsm)message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prophas_been_sent_stepwise_prop (has_been_sent X)message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prophas_been_sent_stepwise_prop (has_been_sent X)message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_sent X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_sent X s' msg ↔ om = Some msg ∨ has_been_sent X s msghas_been_sent_stepwise_prop (has_been_sent X)message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_sent X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_sent X s' msg ↔ om = Some msg ∨ has_been_sent X s msg∀ (l : label (preloaded_with_all_messages_vlsm (constrained_vlsm X constraint))) (s : state (preloaded_with_all_messages_vlsm (constrained_vlsm X constraint))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (constrained_vlsm X constraint))) (om : option message), input_constrained_transition (constrained_vlsm X constraint) l (s, im) (s', om) → ∀ msg : message, has_been_sent X s' msg ↔ field_selector output msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_sent X s msgmessage: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_sent X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_sent X s' msg ↔ om = Some msg ∨ has_been_sent X s msg
l: label X
s: state X
im: option message
s': state X
om: option message
H0: input_constrained_transition (constrained_vlsm X constraint) l ( s, im) (s', om)
msg: messagehas_been_sent X s' msg ↔ om = Some msg ∨ has_been_sent X s msgby apply basic_VLSM_strong_incl; do 2 red; cbn; itauto. Qed.message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_sent X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_sent X s' msg ↔ om = Some msg ∨ has_been_sent X s msg
l: label X
s: state X
im: option message
s': state X
om: option message
H0: input_constrained_transition (constrained_vlsm X constraint) l ( s, im) (s', om)
msg: messageVLSM_incl_part (preloaded_vlsm_machine (constrained_vlsm X constraint) (λ _ : message, True)) (preloaded_vlsm_machine X (λ _ : message, True))message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → PropHasBeenSentCapability (constrained_vlsm X constraint)message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → PropHasBeenSentCapability (constrained_vlsm X constraint)message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → PropRelDecision ?has_been_sentmessage: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prophas_been_sent_stepwise_prop ?has_been_sentby apply (has_been_sent_dec X).message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → PropRelDecision ?has_been_sentby apply constrained_has_been_sent_stepwise_props. Defined.message: Type
X: VLSM message
H: HasBeenSentCapability X
constraint: label X → state X * option message → Prophas_been_sent_stepwise_prop (has_been_sent X)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, has_been_sent vlsm s m ↔ trace_has_message (field_selector output) m trmessage: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, has_been_sent vlsm s m ↔ trace_has_message (field_selector output) m trmessage: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsmRelDecision (has_been_sent vlsm)message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm (field_selector output) (has_been_sent vlsm) s mmessage: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm (field_selector output) (λ (m0 : state vlsm) (s0 : message), ¬ has_been_sent vlsm m0 s0) s mby apply has_been_sent_dec.message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsmRelDecision (has_been_sent vlsm)by apply proper_sent.message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm (field_selector output) (has_been_sent vlsm) s mby apply proper_not_sent. Qed.message: Type
vlsm: VLSM message
H: HasBeenSentCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm (field_selector output) (λ (m0 : state vlsm) (s0 : message), ¬ has_been_sent vlsm m0 s0) s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM messagehas_been_received_stepwise_prop (has_been_received vlsm)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM messagehas_been_received_stepwise_prop (has_been_received vlsm)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_received vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_received vlsm s' msg ↔ im = Some msg ∨ has_been_received vlsm s msghas_been_received_stepwise_prop (has_been_received vlsm)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_received vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_received vlsm s' msg ↔ im = Some msg ∨ has_been_received vlsm s msg∀ (l : label (preloaded_with_all_messages_vlsm X)) (s : state (preloaded_with_all_messages_vlsm X)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm X)) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_received vlsm s' msg ↔ field_selector input msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_received vlsm s msgmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_received vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_received vlsm s' msg ↔ im = Some msg ∨ has_been_received vlsm s msg
l: label vlsm
s: state vlsm
im: option message
s': state vlsm
om: option message
H0: input_constrained_transition X l (s, im) (s', om)
msg: messagehas_been_received vlsm s' msg ↔ im = Some msg ∨ has_been_received vlsm s msgby apply basic_VLSM_strong_incl; do 2 red; cbn; itauto. Qed.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prop
X:= preloaded_vlsm vlsm seed: VLSM message
oracle_no_inits0: ∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_received vlsm s m
oracle_step_update0: ∀ (l : label vlsm) (s : state vlsm) (im : option message) (s' : state vlsm) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_received vlsm s' msg ↔ im = Some msg ∨ has_been_received vlsm s msg
l: label vlsm
s: state vlsm
im: option message
s': state vlsm
om: option message
H0: input_constrained_transition X l (s, im) (s', om)
msg: messageVLSM_incl_part (preloaded_vlsm_machine X (λ _ : message, True)) (preloaded_vlsm_machine vlsm (λ _ : message, True))message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → PropHasBeenReceivedCapability (preloaded_vlsm vlsm seed)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → PropHasBeenReceivedCapability (preloaded_vlsm vlsm seed)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → PropRelDecision ?has_been_receivedmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prophas_been_received_stepwise_prop ?has_been_receivedby apply (has_been_received_dec vlsm).message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → PropRelDecision ?has_been_receivedby apply preloaded_has_been_received_stepwise_props. Defined.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
seed: message → Prophas_been_received_stepwise_prop (has_been_received vlsm)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prophas_been_received_stepwise_prop (has_been_received X)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prophas_been_received_stepwise_prop (has_been_received X)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_received X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_received X s' msg ↔ im = Some msg ∨ has_been_received X s msghas_been_received_stepwise_prop (has_been_received X)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_received X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_received X s' msg ↔ im = Some msg ∨ has_been_received X s msg∀ (l : label (preloaded_with_all_messages_vlsm (constrained_vlsm X constraint))) (s : state (preloaded_with_all_messages_vlsm (constrained_vlsm X constraint))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (constrained_vlsm X constraint))) (om : option message), input_constrained_transition (constrained_vlsm X constraint) l (s, im) (s', om) → ∀ msg : message, has_been_received X s' msg ↔ field_selector input msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_received X s msgmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_received X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_received X s' msg ↔ im = Some msg ∨ has_been_received X s msg
l: label X
s: state X
im: option message
s': state X
om: option message
H0: input_constrained_transition (constrained_vlsm X constraint) l ( s, im) (s', om)
msg: messagehas_been_received X s' msg ↔ im = Some msg ∨ has_been_received X s msgby apply basic_VLSM_strong_incl; do 2 red; cbn; itauto. Qed.message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prop
oracle_no_inits0: ∀ s : state X, initial_state_prop s → ∀ m : message, ¬ has_been_received X s m
oracle_step_update0: ∀ (l : label X) (s : state X) (im : option message) (s' : state X) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, has_been_received X s' msg ↔ im = Some msg ∨ has_been_received X s msg
l: label X
s: state X
im: option message
s': state X
om: option message
H0: input_constrained_transition (constrained_vlsm X constraint) l ( s, im) (s', om)
msg: messageVLSM_incl_part (preloaded_vlsm_machine (constrained_vlsm X constraint) (λ _ : message, True)) (preloaded_vlsm_machine X (λ _ : message, True))message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → PropHasBeenReceivedCapability (constrained_vlsm X constraint)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → PropHasBeenReceivedCapability (constrained_vlsm X constraint)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → PropRelDecision ?has_been_receivedmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prophas_been_received_stepwise_prop ?has_been_receivedby apply (has_been_received_dec X).message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → PropRelDecision ?has_been_receivedby apply constrained_has_been_received_stepwise_props. Defined.message: Type
X: VLSM message
H: HasBeenReceivedCapability X
constraint: label X → state X * option message → Prophas_been_received_stepwise_prop (has_been_received X)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, has_been_received vlsm s m ↔ trace_has_message (field_selector input) m trmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, has_been_received vlsm s m ↔ trace_has_message (field_selector input) m trmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsmRelDecision (has_been_received vlsm)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm (field_selector input) (has_been_received vlsm) s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm (field_selector input) (λ (m0 : state vlsm) (s0 : message), ¬ has_been_received vlsm m0 s0) s mby apply has_been_received_dec.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsmRelDecision (has_been_received vlsm)by apply proper_received.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm (field_selector input) (has_been_received vlsm) s mby apply proper_not_received. Qed.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm (field_selector input) (λ (m0 : state vlsm) (s0 : message), ¬ has_been_received vlsm m0 s0) s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s∀ item : transition_item, item ∈ tr → input item = Nonemessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s∀ item : transition_item, item ∈ tr → input item = Nonemessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s
item: transition_item
Hitem: item ∈ trinput item = Nonemessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s
item: transition_item
Hitem: item ∈ tr
m: message
Heqm: input item = Some mSome m = Nonemessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s
item: transition_item
Hitem: item ∈ tr
m: message
Heqm: input item = Some mselected_message_exists_in_all_preloaded_traces vlsm (field_selector input) s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s
item: transition_item
Hitem: item ∈ tr
m: message
Heqm: input item = Some mselected_message_exists_in_some_preloaded_traces vlsm (field_selector input) s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s
item: transition_item
Hitem: item ∈ tr
m: message
Heqm: input item = Some mtrace_has_message (field_selector input) m trby exists item. Qed.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
is, s: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_constrained_trace_init_to vlsm is s tr
Hs: initial_state_prop s
item: transition_item
Hitem: item ∈ tr
m: message
Heqm: input item = Some m∃ x : transition_item, x ∈ tr ∧ field_selector input m x
A state message oracle for messages sent or received
Arguments has_been_directly_observed {message} vlsm {_}. Arguments has_been_directly_observed_dec {message} vlsm {_}. Arguments has_been_directly_observed_stepwise_props {message} vlsm {_}. #[global] Hint Mode HasBeenDirectlyObservedCapability - ! : typeclass_instances.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_directly_observed vlsm s mexact (oracle_no_inits (has_been_directly_observed_stepwise_props vlsm)). Qed.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ has_been_directly_observed vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_directly_observed vlsm s' msg ↔ (im = Some msg ∨ om = Some msg) ∨ has_been_directly_observed vlsm s msgexact (oracle_step_update (has_been_directly_observed_stepwise_props vlsm)). Qed.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_directly_observed vlsm s' msg ↔ (im = Some msg ∨ om = Some msg) ∨ has_been_directly_observed vlsm s msgmessage: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm item_sends_or_receives (has_been_directly_observed vlsm) s mby apply proper_oracle_holds, oracle_trace_props_from_stepwise, has_been_directly_observed_stepwise_props. Qed.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm item_sends_or_receives (has_been_directly_observed vlsm) s mmessage: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm item_sends_or_receives (λ (s0 : state vlsm) (m0 : message), ¬ has_been_directly_observed vlsm s0 m0) s mby apply proper_not_oracle_holds, oracle_trace_props_from_stepwise, has_been_directly_observed_stepwise_props. Qed.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm item_sends_or_receives (λ (s0 : state vlsm) (m0 : message), ¬ has_been_directly_observed vlsm s0 m0) s mmessage: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, has_been_directly_observed vlsm s m ↔ trace_has_message item_sends_or_receives m trmessage: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ (is s : state (preloaded_with_all_messages_vlsm vlsm)) (tr : list transition_item), finite_constrained_trace_init_to vlsm is s tr → ∀ m : message, has_been_directly_observed vlsm s m ↔ trace_has_message item_sends_or_receives m trmessage: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsmRelDecision (has_been_directly_observed vlsm)message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm item_sends_or_receives (has_been_directly_observed vlsm) s mmessage: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm item_sends_or_receives (λ (m0 : state vlsm) (s0 : message), ¬ has_been_directly_observed vlsm m0 s0) s mby apply has_been_directly_observed_dec.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsmRelDecision (has_been_directly_observed vlsm)by apply proper_directly_observed.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, all_traces_have_message_prop vlsm item_sends_or_receives (has_been_directly_observed vlsm) s mby apply proper_not_directly_observed. Qed.message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsm∀ s : state (preloaded_with_all_messages_vlsm vlsm), constrained_state_prop vlsm s → ∀ m : message, no_traces_have_message_prop vlsm item_sends_or_receives (λ (m0 : state vlsm) (s0 : message), ¬ has_been_directly_observed vlsm m0 s0) s m
A received message introduces no additional equivocations to a state
if it has already been observed in
s
.
Definition no_additional_equivocations
{message : Type}
(vlsm : VLSM message)
`{HasBeenDirectlyObservedCapability message vlsm}
(s : state vlsm)
(m : message)
: Prop
:=
has_been_directly_observed vlsm s m.
no_additional_equivocations is decidable.
message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsmRelDecision (no_additional_equivocations vlsm)by apply has_been_directly_observed_dec. Qed. Definition no_additional_equivocations_constraint {message : Type} (vlsm : VLSM message) `{HasBeenDirectlyObservedCapability message vlsm} (l : label vlsm) (som : state vlsm * option message) : Prop := let (s, om) := som in from_option (no_additional_equivocations vlsm s) True om. Section sec_sent_received_observed_capabilities. Context {message : Type} (vlsm : VLSM message) `{HasBeenReceivedCapability message vlsm} `{HasBeenSentCapability message vlsm} .message: Type
vlsm: VLSM message
H: HasBeenDirectlyObservedCapability vlsmRelDecision (no_additional_equivocations vlsm)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messagehas_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messagehas_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: initial_state_prop s
m: messagehas_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
m: message
IHHs: has_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s mhas_been_directly_observed vlsm s' m ↔ has_been_received vlsm s' m ∨ has_been_sent vlsm s' mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: initial_state_prop s
m: messagehas_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: initial_state_prop s
m: messagehas_been_directly_observed vlsm s m → has_been_received vlsm s m ∨ has_been_sent vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: initial_state_prop s
m: messagehas_been_received vlsm s m ∨ has_been_sent vlsm s m → has_been_directly_observed vlsm s mby intros ?%has_been_directly_observed_no_inits.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: initial_state_prop s
m: messagehas_been_directly_observed vlsm s m → has_been_received vlsm s m ∨ has_been_sent vlsm s mby intros [?%has_been_received_no_inits | ?%has_been_sent_no_inits].message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: initial_state_prop s
m: messagehas_been_received vlsm s m ∨ has_been_sent vlsm s m → has_been_directly_observed vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
m: message
IHHs: has_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s mhas_been_directly_observed vlsm s' m ↔ has_been_received vlsm s' m ∨ has_been_sent vlsm s' mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
m: message
IHHs: has_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s m(om = Some m ∨ om' = Some m) ∨ has_been_directly_observed vlsm s m ↔ has_been_received vlsm s' m ∨ has_been_sent vlsm s' mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
m: message
IHHs: has_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s m(om = Some m ∨ om' = Some m) ∨ has_been_directly_observed vlsm s m ↔ (om = Some m ∨ has_been_received vlsm s m) ∨ has_been_sent vlsm s' mby itauto. Qed. Definition has_been_directly_observed_from_sent_received (s : state vlsm) (m : message) : Prop := has_been_sent vlsm s m \/ has_been_received vlsm s m.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s': state (preloaded_with_all_messages_vlsm vlsm)
l: label (preloaded_with_all_messages_vlsm vlsm)
om, om': option message
s: state (preloaded_with_all_messages_vlsm vlsm)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm vlsm) l (s, om) (s', om')
m: message
IHHs: has_been_directly_observed vlsm s m ↔ has_been_received vlsm s m ∨ has_been_sent vlsm s m(om = Some m ∨ om' = Some m) ∨ has_been_directly_observed vlsm s m ↔ (om = Some m ∨ has_been_received vlsm s m) ∨ om' = Some m ∨ has_been_sent vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsmRelDecision has_been_directly_observed_from_sent_receivedmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsmRelDecision has_been_directly_observed_from_sent_receivedmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
m: messageDecision (has_been_directly_observed_from_sent_received s m)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
m: messageDecision (has_been_sent vlsm s m)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
m: messageDecision (has_been_received vlsm s m)by apply has_been_sent_dec.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
m: messageDecision (has_been_sent vlsm s m)by apply has_been_received_dec. Qed.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
m: messageDecision (has_been_received vlsm s m)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsmoracle_stepwise_props item_sends_or_receives has_been_directly_observed_from_sent_receivedmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsmoracle_stepwise_props item_sends_or_receives has_been_directly_observed_from_sent_receivedmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsmoracle_stepwise_props item_sends_or_receives (λ (s : state vlsm) (m : message), has_been_sent vlsm s m ∨ has_been_received vlsm s m)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ (has_been_sent vlsm s m ∨ has_been_received vlsm s m)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent vlsm s' msg ∨ has_been_received vlsm s' msg ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_sent vlsm s msg ∨ has_been_received vlsm s msgmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm∀ s : state vlsm, initial_state_prop s → ∀ m : message, ¬ (has_been_sent vlsm s m ∨ has_been_received vlsm s m)message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
Hs: initial_state_prop s
m: message
Hsent: has_been_sent vlsm s mFalsemessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
Hs: initial_state_prop s
m: message
Hrecv: has_been_received vlsm s mFalseby apply has_been_sent_no_inits in Hsent.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
Hs: initial_state_prop s
m: message
Hsent: has_been_sent vlsm s mFalseby apply has_been_received_no_inits in Hrecv.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
s: state vlsm
Hs: initial_state_prop s
m: message
Hrecv: has_been_received vlsm s mFalsemessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm∀ (l : label (preloaded_with_all_messages_vlsm vlsm)) (s : state (preloaded_with_all_messages_vlsm vlsm)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm vlsm)) (om : option message), input_constrained_transition vlsm l (s, im) (s', om) → ∀ msg : message, has_been_sent vlsm s' msg ∨ has_been_received vlsm s' msg ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_sent vlsm s msg ∨ has_been_received vlsm s msgmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Ht: input_constrained_transition vlsm l ( s, im) (s', om)
m: messagehas_been_sent vlsm s' m ∨ has_been_received vlsm s' m ↔ item_sends_or_receives m {| l := l; input := im; destination := s'; output := om |} ∨ has_been_sent vlsm s m ∨ has_been_received vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Ht: input_constrained_transition vlsm l ( s, im) (s', om)
m: messagehas_been_sent vlsm s' m ∨ has_been_received vlsm s' m ↔ (im = Some m ∨ om = Some m) ∨ has_been_sent vlsm s m ∨ has_been_received vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Ht: input_constrained_transition vlsm l ( s, im) (s', om)
m: message(om = Some m ∨ has_been_sent vlsm s m) ∨ has_been_received vlsm s' m ↔ (im = Some m ∨ om = Some m) ∨ has_been_sent vlsm s m ∨ has_been_received vlsm s mby itauto. Qed. #[export] Program Instance HasBeenDirectlyObservedCapability_from_sent_received : HasBeenDirectlyObservedCapability vlsm := { has_been_directly_observed := has_been_directly_observed_from_sent_received; has_been_directly_observed_dec := has_been_directly_observed_from_sent_received_dec; has_been_directly_observed_stepwise_props := has_been_directly_observed_from_sent_received_stepwise_props }.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
Ht: input_constrained_transition vlsm l ( s, im) (s', om)
m: message(om = Some m ∨ has_been_sent vlsm s m) ∨ im = Some m ∨ has_been_received vlsm s m ↔ (im = Some m ∨ om = Some m) ∨ has_been_sent vlsm s m ∨ has_been_received vlsm s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop vlsm item_sends_or_receives s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messageselected_messages_consistency_prop vlsm item_sends_or_receives s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: messageselected_message_exists_in_some_preloaded_traces vlsm item_sends_or_receives s m → selected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm item_sends_or_receives s mselected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm item_sends_or_receives s m
Hsm: has_been_directly_observed vlsm s mselected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm item_sends_or_receives s m
Hsm: ¬ has_been_directly_observed vlsm s mselected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s mby apply proper_directly_observed in Hsm.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm item_sends_or_receives s m
Hsm: has_been_directly_observed vlsm s mselected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm item_sends_or_receives s m
Hsm: ¬ has_been_directly_observed vlsm s mselected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s mmessage: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
Hsome: selected_message_exists_in_some_preloaded_traces vlsm item_sends_or_receives s m
Hsm: selected_message_exists_in_no_preloaded_trace vlsm item_sends_or_receives s mselected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s mby elim (Hsm _ _ Htr). Qed. End sec_sent_received_observed_capabilities. Definition computable_messages_oracle `(vlsm : VLSM message) (oracle_set : state vlsm -> set message) (message_selector : message -> transition_item -> Prop) : Prop := oracle_stepwise_props message_selector (fun s m => m ∈ oracle_set s). Class ComputableSentMessages `(vlsm : VLSM message) : Type := { sent_messages_set : state vlsm -> list message; csm_computable_oracle : computable_messages_oracle vlsm sent_messages_set (field_selector output); }. Global Hint Mode ComputableSentMessages - ! : typeclass_instances. Class ComputableReceivedMessages `(vlsm : VLSM message) : Type := { received_messages_set : state vlsm -> list message; crm_computable_oracle : computable_messages_oracle vlsm received_messages_set (field_selector input); }. Global Hint Mode ComputableReceivedMessages - ! : typeclass_instances.message: Type
vlsm: VLSM message
H: HasBeenReceivedCapability vlsm
H0: HasBeenSentCapability vlsm
H1: HasBeenDirectlyObservedCapability vlsm
s: state (preloaded_with_all_messages_vlsm vlsm)
Hs: constrained_state_prop vlsm s
m: message
is: state (preloaded_with_all_messages_vlsm vlsm)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm vlsm) is s tr
Hmsg: trace_has_message item_sends_or_receives m tr
Hsm: selected_message_exists_in_no_preloaded_trace vlsm item_sends_or_receives s mselected_message_exists_in_all_preloaded_traces vlsm item_sends_or_receives s m
Properties of Computable Message Oracles
Section sec_computable_sent_received_observed. Context `(vlsm : VLSM message) .message: Type
vlsm: VLSM message
oracle_set: state vlsm → set message
message_selector: message → transition_item → Prop
Hrm: computable_messages_oracle vlsm oracle_set message_selector
s: state vlsm
Hs: initial_state_prop soracle_set s = []message: Type
vlsm: VLSM message
oracle_set: state vlsm → set message
message_selector: message → transition_item → Prop
Hrm: computable_messages_oracle vlsm oracle_set message_selector
s: state vlsm
Hs: initial_state_prop soracle_set s = []by eapply oracle_no_inits in Hs; [| apply Hrm]; cbn in Hs. Qed. Definition computable_messages_oracle_rel `(Hrm : computable_messages_oracle vlsm oracle_set message_selector) (s : state vlsm) (m : message) : Prop := m ∈ oracle_set s. Definition computable_messages_oracle_rel_dec `(Hrm : computable_messages_oracle vlsm oracle_set message_selector) `{EqDecision message} : RelDecision (computable_messages_oracle_rel Hrm) := fun s m => decide_rel _ _ (oracle_set s).message: Type
vlsm: VLSM message
oracle_set: state vlsm → set message
message_selector: message → transition_item → Prop
Hrm: computable_messages_oracle vlsm oracle_set message_selector
s: state vlsm
Hs: initial_state_prop s
x: messagex ∉ oracle_set smessage: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
s: initial_state vlsmsent_messages_set (`s) = []by eapply computable_messages_oracle_initial_state_empty; [apply csm_computable_oracle | destruct s]. Qed. Definition ComputableSentMessages_has_been_sent `{!ComputableSentMessages vlsm} : state vlsm -> message -> Prop := computable_messages_oracle_rel csm_computable_oracle. #[export] Instance computable_sent_message_has_been_sent_dec `{!ComputableSentMessages vlsm} `{EqDecision message} : RelDecision ComputableSentMessages_has_been_sent := computable_messages_oracle_rel_dec csm_computable_oracle.message: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
s: initial_state vlsmsent_messages_set (`s) = []message: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision messageHasBeenSentCapability vlsmmessage: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision messageHasBeenSentCapability vlsmmessage: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision messagehas_been_sent_stepwise_prop ?has_been_sentmessage: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision messageRelDecision ?has_been_sentby apply csm_computable_oracle.message: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision messagehas_been_sent_stepwise_prop ?has_been_sentby typeclasses eauto. Defined.message: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision messageRelDecision (λ (s : state vlsm) (m : message), m ∈ sent_messages_set s)message: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision message∀ (s : state vlsm) (m : message), m ∈ sent_messages_set s ↔ has_been_sent vlsm s mdone. Qed.message: Type
vlsm: VLSM message
ComputableSentMessages0: ComputableSentMessages vlsm
EqDecision0: EqDecision message∀ (s : state vlsm) (m : message), m ∈ sent_messages_set s ↔ has_been_sent vlsm s mmessage: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: initial_state vlsmreceived_messages_set (`s) = []by eapply computable_messages_oracle_initial_state_empty; [apply crm_computable_oracle | destruct s]. Qed. Definition ComputableReceivedMessages_has_been_sent `{!ComputableReceivedMessages vlsm} : state vlsm -> message -> Prop := computable_messages_oracle_rel crm_computable_oracle. #[export] Instance computable_received_message_has_been_sent_dec `{!ComputableReceivedMessages vlsm} `{EqDecision message} : RelDecision ComputableReceivedMessages_has_been_sent := computable_messages_oracle_rel_dec crm_computable_oracle.message: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: initial_state vlsmreceived_messages_set (`s) = []message: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision messageHasBeenReceivedCapability vlsmmessage: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision messageHasBeenReceivedCapability vlsmmessage: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision messagehas_been_received_stepwise_prop ?has_been_receivedmessage: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision messageRelDecision ?has_been_receivedby apply crm_computable_oracle.message: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision messagehas_been_received_stepwise_prop ?has_been_receivedby typeclasses eauto. Defined.message: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision messageRelDecision (λ (s : state vlsm) (m : message), m ∈ received_messages_set s)message: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision message∀ (s : state vlsm) (m : message), m ∈ received_messages_set s ↔ has_been_received vlsm s mdone. Qed.message: Type
vlsm: VLSM message
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
EqDecision0: EqDecision message∀ (s : state vlsm) (m : message), m ∈ received_messages_set s ↔ has_been_received vlsm s m
Computable (Directly) Observed Messages
Section sec_computable_observed. Context `{EqDecision message} `{!ComputableSentMessages vlsm} `{!ComputableReceivedMessages vlsm} . Definition directly_observed_messages_set (s : state vlsm) : list message := sent_messages_set s ++ received_messages_set s.message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm∀ s : state vlsm, constrained_state_prop vlsm s → ∀ m : message, m ∈ directly_observed_messages_set s ↔ has_been_directly_observed vlsm s mby intros; split; setoid_rewrite elem_of_app; rewrite has_been_received_messages_set_iff, elem_of_sent_messages_set. Qed.message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm∀ s : state vlsm, constrained_state_prop vlsm s → ∀ m : message, m ∈ directly_observed_messages_set s ↔ has_been_directly_observed vlsm s mmessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsmcomputable_messages_oracle vlsm directly_observed_messages_set item_sends_or_receivesmessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsmcomputable_messages_oracle vlsm directly_observed_messages_set item_sends_or_receivesmessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: state vlsm
H: initial_state_prop s
m: messagem ∉ directly_observed_messages_set smessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messagemsg ∈ directly_observed_messages_set s' ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ msg ∈ directly_observed_messages_set smessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: state vlsm
H: initial_state_prop s
m: messagem ∉ directly_observed_messages_set smessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: state vlsm
H: initial_state_prop s
m: message¬ has_been_directly_observed vlsm s mmessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: state vlsm
H: initial_state_prop s
m: messageconstrained_state_prop vlsm sby apply has_been_directly_observed_stepwise_props.message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: state vlsm
H: initial_state_prop s
m: message¬ has_been_directly_observed vlsm s mby apply initial_state_is_valid.message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
s: state vlsm
H: initial_state_prop s
m: messageconstrained_state_prop vlsm smessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messagemsg ∈ directly_observed_messages_set s' ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ msg ∈ directly_observed_messages_set smessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messagehas_been_directly_observed vlsm s' msg ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_directly_observed vlsm s msgmessage: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messageconstrained_state_prop vlsm s'message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messageconstrained_state_prop vlsm sby apply has_been_directly_observed_stepwise_props.message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messagehas_been_directly_observed vlsm s' msg ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ has_been_directly_observed vlsm s msgby eapply input_valid_transition_destination.message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messageconstrained_state_prop vlsm s'by eapply input_valid_transition_origin. Qed. End sec_computable_observed. End sec_computable_sent_received_observed.message: Type
vlsm: VLSM message
EqDecision0: EqDecision message
ComputableSentMessages0: ComputableSentMessages vlsm
ComputableReceivedMessages0: ComputableReceivedMessages vlsm
l: label (preloaded_with_all_messages_vlsm vlsm)
s: state (preloaded_with_all_messages_vlsm vlsm)
im: option message
s': state (preloaded_with_all_messages_vlsm vlsm)
om: option message
H: input_constrained_transition vlsm l ( s, im) (s', om)
msg: messageconstrained_state_prop vlsm smessage: Type
X: VLSM message
H: HasBeenSentCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hsent: has_been_sent X s mcan_emit X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hsent: has_been_sent X s mcan_emit X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
m: message
Hsent: has_been_sent X s mcan_emit X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
m: message
Hsent: has_been_sent X s mfinite_constrained_trace_init_to X is s trmessage: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
m: message
Hsent: has_been_sent X s m
Hpre_tr: finite_constrained_trace_init_to X is s trcan_emit X mby clear -Htr; destruct X; eapply VLSM_incl_finite_valid_trace_init_to; [apply vlsm_incl_preloaded_with_all_messages_vlsm |].message: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
m: message
Hsent: has_been_sent X s mfinite_constrained_trace_init_to X is s trmessage: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
m: message
Hsent: has_been_sent X s m
Hpre_tr: finite_constrained_trace_init_to X is s trcan_emit X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
m: message
Hsent: has_been_sent X s m
Hpre_tr: finite_constrained_trace_init_to X is s tr∃ (som : state X * option message) (l : label X) (s : state X), input_valid_transition X l som (s, Some m)message: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
m: message
Hpre_tr: finite_constrained_trace_init_to X is s tr
item_z: transition_item
Hitem_z: item_z ∈ tr
Hz: field_selector output m item_z∃ (som : state X * option message) (l : label X) (s : state X), input_valid_transition X l som (s, Some m)message: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
item_z: transition_item
pre_z, suf_z: list transition_item
Htr: finite_valid_trace_init_to X is s (pre_z ++ item_z :: suf_z)
m: message
Hpre_tr: finite_constrained_trace_init_to X is s (pre_z ++ item_z :: suf_z)
Hz: field_selector output m item_z∃ (som : state X * option message) (l : label X) (s : state X), input_valid_transition X l som (s, Some m)message: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
item_z: transition_item
pre_z, suf_z: list transition_item
Htr: finite_valid_trace_from_to X is s (pre_z ++ item_z :: suf_z)
m: message
Hpre_tr: finite_constrained_trace_init_to X is s (pre_z ++ item_z :: suf_z)
Hz: field_selector output m item_z∃ (som : state X * option message) (l : label X) (s : state X), input_valid_transition X l som (s, Some m)message: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
item_z: transition_item
pre_z, suf_z: list transition_item
m: message
Hpre_tr: finite_constrained_trace_init_to X is s (pre_z ++ item_z :: suf_z)
Hz: field_selector output m item_z
Htr: input_valid_transition X (l item_z) (finite_trace_last is pre_z, input item_z) (destination item_z, output item_z)∃ (som : state X * option message) (l : label X) (s : state X), input_valid_transition X l som (s, Some m)by eexists _, _, _. Qed.message: Type
X: VLSM message
H: HasBeenSentCapability X
s, is: state X
item_z: transition_item
pre_z, suf_z: list transition_item
m: message
Hpre_tr: finite_constrained_trace_init_to X is s (pre_z ++ item_z :: suf_z)
Hz: output item_z = Some m
Htr: input_valid_transition X (l item_z) (finite_trace_last is pre_z, input item_z) (destination item_z, Some m)∃ (som : state X * option message) (l : label X) (s : state X), input_valid_transition X l som (s, Some m)message: Type
X: VLSM message
H: HasBeenSentCapability X
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hsent: has_been_sent X s mcan_emit (preloaded_with_all_messages_vlsm X) mby eapply sent_can_emit. Qed.message: Type
X: VLSM message
H: HasBeenSentCapability X
s: state (preloaded_with_all_messages_vlsm X)
Hs: constrained_state_prop X s
m: message
Hsent: has_been_sent X s mcan_emit (preloaded_with_all_messages_vlsm X) mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hsent: has_been_sent X s mvalid_message_prop X mby apply emitted_messages_are_valid_iff; right; eapply sent_can_emit. Qed.message: Type
X: VLSM message
H: HasBeenSentCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hsent: has_been_sent X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hreceived: has_been_received X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hreceived: has_been_received X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s: state X
Hs: initial_state_prop s
m: message
Hreceived: has_been_received X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s': state X
l: label X
om, om': option message
s: state X
Ht: input_valid_transition X l (s, om) (s', om')
m: message
Hreceived: has_been_received X s' m
IHHs: has_been_received X s m → valid_message_prop X mvalid_message_prop X mby apply has_been_received_no_inits in Hreceived.message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s: state X
Hs: initial_state_prop s
m: message
Hreceived: has_been_received X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s': state X
l: label X
om, om': option message
s: state X
Ht: input_valid_transition X l (s, om) (s', om')
m: message
Hreceived: has_been_received X s' m
IHHs: has_been_received X s m → valid_message_prop X mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s': state X
l: label X
om, om': option message
s: state X
Ht: input_valid_transition X l (s, om) (s', om')
m: message
Hreceived: has_been_received X s' m
IHHs: has_been_received X s m → valid_message_prop X m
Hom': option_valid_message_prop X omvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s': state X
l: label X
om, om': option message
s: state X
Ht: input_constrained_transition X l ( s, om) (s', om')
m: message
Hreceived: has_been_received X s' m
IHHs: has_been_received X s m → valid_message_prop X m
Hom': option_valid_message_prop X omvalid_message_prop X mby destruct Hreceived as [[= ->] |]; auto. Qed.message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s': state X
l: label X
om, om': option message
s: state X
Ht: input_constrained_transition X l ( s, om) (s', om')
m: message
IHHs: has_been_received X s m → valid_message_prop X m
Hom': option_valid_message_prop X om
Hreceived: om = Some m ∨ has_been_received X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hobserved: has_been_directly_observed X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
Hobserved: has_been_directly_observed X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
H1: has_been_sent X s mvalid_message_prop X mmessage: Type
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
H1: has_been_received X s mvalid_message_prop X mby eapply sent_valid.message: Type
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
H1: has_been_sent X s mvalid_message_prop X mby eapply received_valid. Qed.message: Type
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
s: state X
Hs: valid_state_prop X s
m: message
H1: has_been_received X s mvalid_message_prop X m
Equivocation in compositions
Section sec_composite. Context {message : Type} `{finite.Finite index} (IM : index -> VLSM message) (Free := free_composite_vlsm IM) `{forall i : index, (HasBeenSentCapability (IM i))} `{forall i : index, (HasBeenReceivedCapability (IM i))} . Section sec_stepwise_props. Context [message_selectors : forall i : index, message -> transition_item (IM i) -> Prop] [oracles : forall i, state_message_oracle (IM i)] (stepwise_props : forall i, oracle_stepwise_props (message_selectors i) (oracles i)) .message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)message → composite_transition_item IM → Propmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)message → composite_transition_item IM → Propmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
msg: message
i: index
li: label (IM i)
input: option message
s: state (composite_type IM)
output: option messagePropexact {| l := li; input := input; destination := s i; output := output |}. Defined. Definition composite_oracle : composite_state IM -> message -> Prop := fun s msg => exists i, oracles i (s i) msg.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
msg: message
i: index
li: label (IM i)
input: option message
s: state (composite_type IM)
output: option messagetransition_itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)oracle_stepwise_props composite_message_selector composite_oraclemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)oracle_stepwise_props composite_message_selector composite_oraclemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
Hproto: input_constrained_transition (free_composite_vlsm IM) (existT i li) (s, im) ( s', om)
msg: messagecomposite_oracle s' msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
Hproto: input_constrained_transition (free_composite_vlsm IM) (existT i li) (s, im) ( s', om)
msg: message∀ j : index, s j = s' j ∨ j = imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
Hproto: input_constrained_transition (free_composite_vlsm IM) (existT i li) (s, im) ( s', om)
msg: message
Hsj: ∀ j : index, s j = s' j ∨ j = icomposite_oracle s' msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
Hproto: input_constrained_transition (free_composite_vlsm IM) (existT i li) (s, im) ( s', om)
msg: message∀ j : index, s j = s' j ∨ j = imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
Hproto: input_constrained_transition (free_composite_vlsm IM) (existT i li) (s, im) ( s', om)
msg: message
j: indexs j = s' j ∨ j = iby destruct Hproto as [| (lj & Hlj & _)]; [left | right; congruence].message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
j: index
Hproto: s j = s' j ∨ (∃ li0 : label (IM j), existT i li = existT j li0 ∧ input_constrained_transition (IM j) li0 (s j, im) ( s' j, om))
msg: messages j = s' j ∨ j = imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
Hproto: input_constrained_transition (free_composite_vlsm IM) (existT i li) (s, im) ( s', om)
msg: message
Hsj: ∀ j : index, s j = s' j ∨ j = icomposite_oracle s' msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
Hproto: input_constrained_transition (IM i) li (s i, im) ( s' i, om)
msg: message
Hsj: ∀ j : index, s j = s' j ∨ j = icomposite_oracle s' msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = icomposite_oracle s' msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = icomposite_oracle s' msg → message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = imessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msg → composite_oracle s' msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = icomposite_oracle s' msg → message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
j: index
Hj: oracles j (s' j) msgmessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
j: index
Hj: oracles j (s' j) msg
Hunchanged: s j = s' jmessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
Hj: oracles i (s' i) msgmessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgby right; exists j; rewrite Hunchanged.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
j: index
Hj: oracles j (s' j) msg
Hunchanged: s j = s' jmessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
Hj: oracles i (s' i) msgmessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgby destruct Hj; [left | right; exists i].message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
Hj: message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msgmessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = imessage_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ composite_oracle s msg → composite_oracle s' msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
Hnow: message_selectors i msg {| l := li; input := im; destination := s' i; output := om |}composite_oracle s' msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
j: index
Hbefore: oracles j (s j) msgcomposite_oracle s' msgby exists i; apply Hproto; left.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
Hnow: message_selectors i msg {| l := li; input := im; destination := s' i; output := om |}composite_oracle s' msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
j: index
Hbefore: oracles j (s j) msgcomposite_oracle s' msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
j: index
Hbefore: oracles j (s j) msgoracles j (s' j) msgby apply Hproto; right. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
i: index
li: label (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
im: option message
s': state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
om: option message
msg: message
Hproto: oracles i (s' i) msg ↔ message_selectors i msg {| l := li; input := im; destination := s' i; output := om |} ∨ oracles i (s i) msg
Hsj: ∀ j : index, s j = s' j ∨ j = i
Hbefore: oracles i (s i) msgoracles i (s' i) msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageoracle_stepwise_props composite_message_selector composite_oraclemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageoracle_stepwise_props composite_message_selector composite_oraclemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
oracle_no_inits0: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
oracle_step_update0: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msgoracle_stepwise_props composite_message_selector composite_oraclemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
oracle_no_inits0: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
oracle_step_update0: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ s : state X, initial_state_prop s → ∀ m : message, ¬ composite_oracle s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
oracle_no_inits0: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
oracle_step_update0: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ (l : label (preloaded_with_all_messages_vlsm X)) (s : state (preloaded_with_all_messages_vlsm X)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm X)) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msgby apply oracle_no_inits0.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
oracle_no_inits0: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
oracle_step_update0: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ s : state X, initial_state_prop s → ∀ m : message, ¬ composite_oracle s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
oracle_no_inits0: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
oracle_step_update0: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ (l : label (preloaded_with_all_messages_vlsm X)) (s : state (preloaded_with_all_messages_vlsm X)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm X)) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
oracle_no_inits0: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
oracle_step_update0: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
im: option message
s': state (preloaded_with_all_messages_vlsm X)
om: option message
H2: input_constrained_transition X l (s, im) (s', om)
msg: messageinput_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om)by apply preloaded_constraint_subsumption_incl_free. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
oracle_no_inits0: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
oracle_step_update0: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
im: option message
s': state (preloaded_with_all_messages_vlsm X)
om: option message
H2: input_constrained_transition X l (s, im) (s', om)
msg: messageVLSM_incl_part (preloaded_with_all_messages_vlsm X) (preloaded_vlsm_machine (free_composite_vlsm IM) (λ _ : message, True))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: oracles i (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: oracles i (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
Horacle: oracles i (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
Horacle: oracles i (s i) m
Hpre_tr: finite_valid_trace_init_to {| vlsm_type := free_composite_vlsm IM; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm IM) |} is s tr∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
Horacle: oracles i (s i) m
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)
Horacle: selected_message_exists_in_all_preloaded_traces (IM i) (message_selectors i) (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
Horacle: trace_has_message (message_selectors i) m (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item: transition_item
Hitem: item ∈ VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr
Hout: message_selectors i m item∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item, itemX: transition_item
HitemX: itemX ∈ tr
HitemX_pr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i) itemX = Some item
Hout: message_selectors i m item∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item, itemX: transition_item
pre, suf: list transition_item
Htr_pr: tr = pre ++ itemX :: suf
HitemX_pr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i) itemX = Some item
Hout: message_selectors i m item∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ composite_message_selector m itemmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item, itemX: transition_item
pre, suf: list transition_item
Htr_pr: tr = pre ++ itemX :: suf
HitemX_pr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i) itemX = Some item
Hout: message_selectors i m iteminput_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = i ∧ composite_message_selector m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item, itemX: transition_item
pre, suf: list transition_item
Htr_pr: tr = pre ++ [itemX] ++ suf
HitemX_pr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i) itemX = Some item
Hout: message_selectors i m iteminput_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = i ∧ composite_message_selector m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item, itemX: transition_item
pre, suf: list transition_item
Htr_pr: tr = pre ++ [itemX] ++ suf
HitemX_pr: pre_VLSM_projection_transition_item_project (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (preloaded_with_all_messages_vlsm (IM i)) (composite_project_label IM i) (λ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s i) itemX = Some item
Hout: message_selectors i m item
Ht: input_valid_transition X (l itemX) (finite_trace_last is pre, input itemX) (destination itemX, output itemX)input_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = i ∧ composite_message_selector m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item, itemX: transition_item
pre, suf: list transition_item
Htr_pr: tr = pre ++ [itemX] ++ suf
HitemX_pr: match match decide (i = projT1 (l itemX)) with | left e => Some (eq_rect_r (λ n : index, label (IM n)) (projT2 (l itemX)) e) | right _ => None end with | Some lY => Some {| l := lY; input := input itemX; destination := destination itemX i; output := output itemX |} | None => None end = Some item
Hout: message_selectors i m item
Ht: input_valid_transition X (l itemX) (finite_trace_last is pre, input itemX) (destination itemX, output itemX)input_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = i ∧ composite_message_selector m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s tr
i: index
m: message
item, itemX: transition_item
pre, suf: list transition_item
Htr_pr: tr = (pre ++ [itemX]) ++ suf
HitemX_pr: match match decide (i = projT1 (l itemX)) with | left e => Some (eq_rect_r (λ n : index, label (IM n)) (projT2 (l itemX)) e) | right _ => None end with | Some lY => Some {| l := lY; input := input itemX; destination := destination itemX i; output := output itemX |} | None => None end = Some item
Hout: message_selectors i m item
Ht: input_valid_transition X (l itemX) (finite_trace_last is pre, input itemX) (destination itemX, output itemX)input_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = i ∧ composite_message_selector m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s, is: composite_state IM
itemX: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_init_to X is s ((pre ++ [itemX]) ++ suf)
m: message
Hout: message_selectors (projT1 (l itemX)) m {| l := projT2 (l itemX); input := input itemX; destination := destination itemX (projT1 (l itemX)); output := output itemX |}
Ht: input_valid_transition X (l itemX) (finite_trace_last is pre, input itemX) (destination itemX, output itemX)input_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = projT1 (l itemX) ∧ composite_message_selector m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s, is: composite_state IM
itemX: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to X (finite_trace_last is (pre ++ [itemX])) s suf
m: message
Hout: message_selectors (projT1 (l itemX)) m {| l := projT2 (l itemX); input := input itemX; destination := destination itemX (projT1 (l itemX)); output := output itemX |}
Ht: input_valid_transition X (l itemX) (finite_trace_last is pre, input itemX) (destination itemX, output itemX)input_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = projT1 (l itemX) ∧ composite_message_selector m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s, is: composite_state IM
itemX: transition_item
pre, suf: list transition_item
Htr: finite_valid_trace_from_to X (destination itemX) s suf
m: message
Hout: message_selectors (projT1 (l itemX)) m {| l := projT2 (l itemX); input := input itemX; destination := destination itemX (projT1 (l itemX)); output := output itemX |}
Ht: input_valid_transition X (l itemX) (finite_trace_last is pre, input itemX) (destination itemX, output itemX)input_valid_transition_item X (finite_trace_last is pre) itemX ∧ in_futures X (destination itemX) s ∧ projT1 (l itemX) = projT1 (l itemX) ∧ composite_message_selector m itemXby split_and!; [| exists suf | ..]. Qed. End sec_stepwise_props.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
message_selectors: ∀ i : index, message → transition_item → Prop
oracles: ∀ i : index, state_message_oracle (IM i)
stepwise_props: ∀ i : index, oracle_stepwise_props (message_selectors i) (oracles i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s, is: composite_state IM
x: index
l: label (IM x)
input: option message
destination: composite_state IM
output: option message
pre, suf: list transition_item
Htr: finite_valid_trace_from_to X destination s suf
m: message
Hout: message_selectors x m {| l := l; input := input; destination := destination x; output := output |}
Ht: input_valid_transition X (existT x l) (finite_trace_last is pre, input) (destination, output)input_valid_transition_item X (finite_trace_last is pre) {| l := existT x l; input := input; destination := destination; output := output |} ∧ in_futures X destination s ∧ x = x ∧ message_selectors x m {| l := l; input := input; destination := destination x; output := output |}
A message has_been_sent for a composite state if it has_been_sent
for any of its components.
Definition composite_has_been_sent
(s : composite_state IM)
(m : message)
: Prop
:= exists (i : index), has_been_sent (IM i) (s i) m.
composite_has_been_sent is decidable.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)RelDecision composite_has_been_sentmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)RelDecision composite_has_been_sentmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (composite_has_been_sent s m)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageExists (λ i : index, has_been_sent (IM i) (s i) m) (enum index) ↔ composite_has_been_sent s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (Exists (λ i : index, has_been_sent (IM i) (s i) m) (enum index))by rewrite Exists_finite.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageExists (λ i : index, has_been_sent (IM i) (s i) m) (enum index) ↔ composite_has_been_sent s mby typeclasses eauto. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (Exists (λ i : index, has_been_sent (IM i) (s i) m) (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM messagehas_been_sent_stepwise_prop composite_has_been_sentmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM messagehas_been_sent_stepwise_prop composite_has_been_sentmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM messagehas_been_sent_stepwise_prop composite_has_been_sentmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM message
Hinits: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msghas_been_sent_stepwise_prop composite_has_been_sentby intros l; specialize (Hstep l); destruct l. Qed. #[export] Instance free_composite_HasBeenSentCapability (X := free_composite_vlsm IM) : HasBeenSentCapability X := Build_HasBeenSentCapability X composite_has_been_sent composite_has_been_sent_dec free_composite_has_been_sent_stepwise_props.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM message
Hinits: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ (l : label (preloaded_with_all_messages_vlsm X)) (s : state (preloaded_with_all_messages_vlsm X)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm X)) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, composite_has_been_sent s' msg ↔ field_selector output msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_has_been_sent s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hs: constrained_state_prop (free_composite_vlsm IM) s
m: messagehas_been_sent_prop (free_composite_vlsm IM) composite_has_been_sent s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hs: constrained_state_prop (free_composite_vlsm IM) s
m: messagehas_been_sent_prop (free_composite_vlsm IM) composite_has_been_sent s mby apply Hproper_sent. Qed. Section sec_composite_has_been_received.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
Hs: constrained_state_prop (free_composite_vlsm IM) s
m: message
Hproper_sent: ∀ s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), constrained_state_prop (free_composite_vlsm IM) s → ∀ m : message, has_been_sent_prop (free_composite_vlsm IM) (has_been_sent (free_composite_vlsm IM)) s mhas_been_sent_prop (free_composite_vlsm IM) composite_has_been_sent s m
A message has_been_received for a composite state
if it has_been_received for any of its components.
Definition composite_has_been_received
(s : composite_state IM)
(m : message)
: Prop
:= exists (i : index), has_been_received (IM i) (s i) m.
composite_has_been_received is decidable.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)RelDecision composite_has_been_receivedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)RelDecision composite_has_been_receivedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (composite_has_been_received s m)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageExists (λ i : index, has_been_received (IM i) (s i) m) (enum index) ↔ composite_has_been_received s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (Exists (λ i : index, has_been_received (IM i) (s i) m) (enum index))by rewrite Exists_finite.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageExists (λ i : index, has_been_received (IM i) (s i) m) (enum index) ↔ composite_has_been_received s mby typeclasses eauto. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (Exists (λ i : index, has_been_received (IM i) (s i) m) (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM messagehas_been_received_stepwise_prop composite_has_been_receivedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM messagehas_been_received_stepwise_prop composite_has_been_receivedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM messagehas_been_received_stepwise_prop composite_has_been_receivedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM message
Hinits: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msghas_been_received_stepwise_prop composite_has_been_receivedby intros l; specialize (Hstep l); destruct l. Qed. #[export] Instance free_composite_HasBeenReceivedCapability (X := free_composite_vlsm IM) : HasBeenReceivedCapability X := Build_HasBeenReceivedCapability X composite_has_been_received composite_has_been_received_dec free_composite_has_been_received_stepwise_props. #[export] Instance free_composite_HasBeenDirectlyObservedCapability (X := free_composite_vlsm IM) : HasBeenDirectlyObservedCapability X := HasBeenDirectlyObservedCapability_from_sent_received X. #[export] Instance constrained_vlsm_HasBeenDirectlyObservedCapability `(X : VLSM message) `{HasBeenSentCapability message X} `{HasBeenReceivedCapability message X} (constraint : label X -> state X * option message -> Prop) : HasBeenDirectlyObservedCapability X := HasBeenDirectlyObservedCapability_from_sent_received X. End sec_composite_has_been_received.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
X:= free_composite_vlsm IM: VLSM message
Hinits: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ (l : label (preloaded_with_all_messages_vlsm X)) (s : state (preloaded_with_all_messages_vlsm X)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm X)) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, composite_has_been_received s' msg ↔ field_selector input msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_has_been_received s msg
A message has_been_directly_observed in a composite state if it
has_been_directly_observed in any of its components.
Definition composite_has_been_directly_observed
(s : composite_state IM)
(m : message)
: Prop
:= exists (i : index), has_been_directly_observed (IM i) (s i) m.
composite_has_been_directly_observed is decidable.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)RelDecision composite_has_been_directly_observedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)RelDecision composite_has_been_directly_observedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (composite_has_been_directly_observed s m)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageExists (λ i : index, has_been_directly_observed (IM i) (s i) m) (enum index) ↔ composite_has_been_directly_observed s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (Exists (λ i : index, has_been_directly_observed (IM i) (s i) m) (enum index))by rewrite Exists_finite.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageExists (λ i : index, has_been_directly_observed (IM i) (s i) m) (enum index) ↔ composite_has_been_directly_observed s mby typeclasses eauto. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messageDecision (Exists (λ i : index, has_been_directly_observed (IM i) (s i) m) (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageoracle_stepwise_props item_sends_or_receives composite_has_been_directly_observedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageoracle_stepwise_props item_sends_or_receives composite_has_been_directly_observedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Hinits: ∀ s : state (composite_vlsm IM constraint), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (composite_vlsm IM constraint))) (s : state (preloaded_with_all_messages_vlsm (composite_vlsm IM constraint))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (composite_vlsm IM constraint))) (om : option message), input_constrained_transition (composite_vlsm IM constraint) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msgoracle_stepwise_props item_sends_or_receives composite_has_been_directly_observedby intros l; specialize (Hstep l); destruct l. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Hinits: ∀ s : state (composite_vlsm IM constraint), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (composite_vlsm IM constraint))) (s : state (preloaded_with_all_messages_vlsm (composite_vlsm IM constraint))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (composite_vlsm IM constraint))) (om : option message), input_constrained_transition (composite_vlsm IM constraint) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ (l : label (preloaded_with_all_messages_vlsm X)) (s : state (preloaded_with_all_messages_vlsm X)) (im : option message) (s' : state (preloaded_with_all_messages_vlsm X)) (om : option message), input_constrained_transition X l (s, im) (s', om) → ∀ msg : message, composite_has_been_directly_observed s' msg ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_has_been_directly_observed s msgmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)oracle_stepwise_props item_sends_or_receives composite_has_been_directly_observedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)oracle_stepwise_props item_sends_or_receives composite_has_been_directly_observedmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Hinits: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msgoracle_stepwise_props item_sends_or_receives composite_has_been_directly_observedby intros l; specialize (Hstep l); destruct l. Qed. Context {validator : Type} `{finite.Finite validator} {measurable_V : Measurable validator} (threshold : R) `{FinSet validator Cv} `{!ReachableThreshold validator Cv threshold} (A : validator -> index) (sender : message -> option validator) . Definition component_signed_message (component_idx : index) (m : message) : Prop := option_map A (sender m) = Some component_idx.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
Hinits: ∀ s : state (free_composite_vlsm IM), initial_state_prop s → ∀ m : message, ¬ composite_oracle s m
Hstep: ∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l ( s, im) (s', om) → ∀ msg : message, composite_oracle s' msg ↔ composite_message_selector msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_oracle s msg∀ (l : label (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (im : option message) (s' : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (om : option message), input_constrained_transition (free_composite_vlsm IM) l (s, im) (s', om) → ∀ msg : message, composite_has_been_directly_observed s' msg ↔ item_sends_or_receives msg {| l := l; input := im; destination := s'; output := om |} ∨ composite_has_been_directly_observed s msg
Definitions for safety and nontriviality of the sender function.
Safety means that if we designate a validator as the sender
of a certain message, then it is impossible for other components
to produce that message
Weak/strong nontriviality say that each validator should
be designated sender for at least one/all its valid
messages.
Definition sender_safety_prop : Prop :=
forall
(m : message)
(v : validator)
(Hsender : sender m = Some v),
forall (j : index)
(Hdif : j <> A v),
~ can_emit (preloaded_with_all_messages_vlsm (IM j)) m.
An alternative, possibly friendlier, formulation. Note that it is
slightly weaker, in that it does not require that the sender
is able to send the message.
Definition sender_safety_alt_prop : Prop := forall (m : message) (v : validator) (Hsender : sender m = Some v), forall (i : index), can_emit (preloaded_with_all_messages_vlsm (IM i)) m -> A v = i.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validatorsender_safety_prop ↔ sender_safety_alt_propmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validatorsender_safety_prop ↔ sender_safety_alt_propmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_prop
m: message
v: validator
Hsender: sender m = Some v
i: index
H11: can_emit (preloaded_with_all_messages_vlsm (IM i)) mA v = imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
m: message
v: validator
Hsender: sender m = Some v
j: index
Hdif: j ≠ A v¬ can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_prop
m: message
v: validator
Hsender: sender m = Some v
i: index
H11: can_emit (preloaded_with_all_messages_vlsm (IM i)) mA v = imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ j : index, j ≠ A v → ¬ can_emit (preloaded_with_all_messages_vlsm (IM j)) m
Hsender: sender m = Some v
i: index
H11: can_emit (preloaded_with_all_messages_vlsm (IM i)) mA v = iby elim (Hsender_safety _ n).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ j : index, j ≠ A v → ¬ can_emit (preloaded_with_all_messages_vlsm (IM j)) m
Hsender: sender m = Some v
i: index
H11: can_emit (preloaded_with_all_messages_vlsm (IM i)) m
n: i ≠ A vA v = imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
m: message
v: validator
Hsender: sender m = Some v
j: index
Hdif: j ≠ A v¬ can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
m: message
v: validator
Hsender: sender m = Some v
j: index
Hdif: j ≠ A v
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM j)) mFalseby specialize (Hsender_safety m v Hsender _ Hemit). Qed. Definition channel_authenticated_message (component_idx : index) (m : message) : Prop := option_map A (sender m) = Some component_idx.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
m: message
v: validator
Hsender: sender m = Some v
j: index
Hdif: j ≠ A v
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM j)) mj = A v
The channel_authentication_property requires that any sent message must
be originating with its
sender
.
Note that we don't require that sender
is total, but rather that it is
defined for all messages which can be emitted.
Definition channel_authentication_prop : Prop :=
forall i m,
can_emit (preloaded_with_all_messages_vlsm (IM i)) m ->
channel_authenticated_message i m.
Channel authentication guarantees sender safety
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validatorchannel_authentication_prop → sender_safety_alt_propmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validatorchannel_authentication_prop → sender_safety_alt_propmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsigned: channel_authentication_prop
m: message
v: validator
Hsender: sender m = Some v
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) mA v = imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsigned: channel_authentication_prop
m: message
v: validator
Hsender: sender m = Some v
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) mSome (A v) = Some imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsigned: channel_authentication_prop
m: message
v: validator
Hsender: sender m = Some v
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) moption_map A (Some v) = Some iby apply Hsigned. Qed. Definition sender_nontriviality_prop : Prop := forall (v : validator), exists (m : message), can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m /\ sender m = Some v. Definition no_initial_messages_in_IM_prop : Prop := forall i m, ~ initial_message_prop (IM i) m.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsigned: channel_authentication_prop
m: message
v: validator
Hsender: sender m = Some v
i: index
Hemit: can_emit (preloaded_with_all_messages_vlsm (IM i)) moption_map A (sender m) = Some imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message∀ m : message, valid_message_prop X m → ∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message∀ m : message, valid_message_prop X m → ∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
m: messagevalid_message_prop X m → ∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
m: messageinitial_message_prop m ∨ can_emit X m → ∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
m: message
s: state X
om: option message
i: index
l: label (IM i)
s': state X
Ht: input_valid_transition X (existT i l) (s, om) ( s', Some m)∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
m: message
s: state X
om: option message
i: index
l: label (IM i)
s': state X
Ht: input_valid_transition {| vlsm_type := composite_type IM; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm IM) |} (existT i l) (s, om) ( s', Some m)∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
m: message
s: state X
om: option message
i: index
l: label (IM i)
s': state X
Ht: input_constrained_transition (IM i) l (s i, om) (s' i, Some m)∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
m: message
i: index
can_emit_signed: can_emit (preloaded_with_all_messages_vlsm (IM i)) m → channel_authenticated_message i m
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
s: state X
om: option message
l: label (IM i)
s': state X
Ht: input_constrained_transition (IM i) l (s i, om) (s' i, Some m)∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
m: message
i: index
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
s: state X
om: option message
l: label (IM i)
s': state X
Ht: input_constrained_transition (IM i) l (s i, om) (s' i, Some m)
can_emit_signed: channel_authenticated_message i m∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
m: message
i: index
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
s: state X
om: option message
l: label (IM i)
s': state X
Ht: input_constrained_transition (IM i) l (s i, om) (s' i, Some m)
can_emit_signed: option_map A (sender m) = Some i∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
m: message
i: index
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
s: state X
om: option message
l: label (IM i)
s': state X
Ht: input_constrained_transition (IM i) l (s i, om) (s' i, Some m)
v: validator
Hsender: sender m = Some v
can_emit_signed: option_map A (Some v) = Some i∃ v0 : validator, Some v = Some v0 ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v0))) mby exists v; subst; unfold can_emit; eauto. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
m: message
i: index
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
X:= free_composite_vlsm IM: VLSM message
s: state X
om: option message
l: label (IM i)
s': state X
Ht: input_constrained_transition (IM i) l (s i, om) (s' i, Some m)
v: validator
Hsender: sender m = Some v
can_emit_signed: A v = i∃ v0 : validator, Some v = Some v0 ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v0))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message∀ m : message, valid_message_prop X m → ∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message∀ m : message, valid_message_prop X m → ∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
m: message
H11: valid_message_prop X m∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
m: message
H11: valid_message_prop X mvalid_message_prop (free_composite_vlsm IM) mby apply VLSM_incl_constrained_vlsm. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
m: message
H11: valid_message_prop X mVLSM_incl_part X (free_composite_vlsm_machine IM)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop∀ m : message, valid_message_prop (free_composite_vlsm IM) m → sender m ≠ Nonemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop∀ m : message, valid_message_prop (free_composite_vlsm IM) m → sender m ≠ Nonemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
m: message
Hm: valid_message_prop (free_composite_vlsm IM) msender m ≠ Nonemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
m: message
Hm: valid_message_prop (free_composite_vlsm IM) m(∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m) → sender m ≠ Nonemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
m: message
Hm: valid_message_prop (free_composite_vlsm IM) m∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mby intros (v & -> & _); congruence.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
m: message
Hm: valid_message_prop (free_composite_vlsm IM) m(∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m) → sender m ≠ Noneby apply free_composite_no_initial_valid_messages_emitted_by_sender. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
m: message
Hm: valid_message_prop (free_composite_vlsm IM) m∃ v : validator, sender m = Some v ∧ can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message∀ m : message, valid_message_prop X m → sender m ≠ Nonemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message∀ m : message, valid_message_prop X m → sender m ≠ Nonemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
m: message
Hm: valid_message_prop X msender m ≠ Nonemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
m: message
Hm: valid_message_prop X mvalid_message_prop (free_composite_vlsm IM) mby apply VLSM_incl_constrained_vlsm. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
no_initial_messages_in_IM: no_initial_messages_in_IM_prop
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
m: message
Hm: valid_message_prop X mVLSM_incl_part X (free_composite_vlsm_machine IM)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2∀ (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (item : transition_item), input_constrained_transition_item (free_composite_vlsm IM) s item → ∀ v : validator, A v = projT1 (l item) → ∀ m : message, output item = Some m → sender m = Some vmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2∀ (s : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))) (item : transition_item), input_constrained_transition_item (free_composite_vlsm IM) s item → ∀ v : validator, A v = projT1 (l item) → ∀ m : message, output item = Some m → sender m = Some vmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
item: transition_item
Ht: input_constrained_transition_item (free_composite_vlsm IM) s item
v: validator
HAv: A v = projT1 (l item)
m: message
Houtput: output item = Some msender m = Some vmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
item: transition_item
Ht: input_constrained_transition_item (free_composite_vlsm IM) s item
v: validator
HAv: A v = projT1 (l item)
m: message
Houtput: output item = Some mchannel_authenticated_message (A v) m → sender m = Some vmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
item: transition_item
Ht: input_constrained_transition_item (free_composite_vlsm IM) s item
v: validator
HAv: A v = projT1 (l item)
m: message
Houtput: output item = Some mchannel_authenticated_message (A v) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
item: transition_item
Ht: input_constrained_transition_item (free_composite_vlsm IM) s item
v: validator
HAv: A v = projT1 (l item)
m: message
Houtput: output item = Some mchannel_authenticated_message (A v) m → sender m = Some vby cbn; intros Hvv'; apply Some_inj, A_inj in Hvv'; subst.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
item: transition_item
Ht: input_constrained_transition_item (free_composite_vlsm IM) s item
v: validator
HAv: A v = projT1 (l item)
m: message
Houtput: output item = Some m
v': validatoroption_map A (Some v') = Some (A v) → Some v' = Some vmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
item: transition_item
Ht: input_constrained_transition_item (free_composite_vlsm IM) s item
v: validator
HAv: A v = projT1 (l item)
m: message
Houtput: output item = Some mchannel_authenticated_message (A v) mby rewrite Houtput in Hti; apply can_emit_signed; rewrite HAv; eexists _, _, _. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
can_emit_signed: channel_authentication_prop
A_inj: ∀ v1 v2 : validator, A v1 = A v2 → v1 = v2
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
item: transition_item
Ht: input_constrained_transition_item (free_composite_vlsm IM) s item
v: validator
HAv: A v = projT1 (l item)
m: message
Houtput: output item = Some m
Hti: input_constrained_transition (IM (projT1 (l item))) (projT2 (l item)) (s (projT1 (l item)), input item) (destination item (projT1 (l item)), output item)channel_authenticated_message (A v) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some vcomposite_has_been_sent s m ↔ has_been_sent (IM (A v)) (s (A v)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some vcomposite_has_been_sent s m ↔ has_been_sent (IM (A v)) (s (A v)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some vcomposite_has_been_sent s m → has_been_sent (IM (A v)) (s (A v)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) mhas_been_sent (IM (A v)) (s (A v)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) mcan_emit (preloaded_with_all_messages_vlsm (IM i)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) mfinite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) m
Htr_pr: finite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)can_emit (preloaded_with_all_messages_vlsm (IM i)) mby apply (VLSM_projection_finite_valid_trace_init_to (preloaded_component_projection IM i)).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) mfinite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) m
Htr_pr: finite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)can_emit (preloaded_with_all_messages_vlsm (IM i)) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) m
Htr_pr: finite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)finite_valid_trace (preloaded_with_all_messages_vlsm (IM i)) ?si ?trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) m
Htr_pr: finite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)trace_has_message (field_selector output) m ?trby eapply valid_trace_forget_last.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) m
Htr_pr: finite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)finite_valid_trace (preloaded_with_all_messages_vlsm (IM i)) ?si ?trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) m
Htr_pr: finite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)trace_has_message (field_selector output) m (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)by red in Htr_pr; apply valid_trace_last_pstate in Htr_pr. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop
is, s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM))
tr: list transition_item
Htr: finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr
m: message
v: validator
Hsender: sender m = Some v
i: index
Hi: has_been_sent (IM i) (s i) m
Htr_pr: finite_constrained_trace_init_to (IM i) (is i) (s i) (VLSM_projection_finite_trace_project (preloaded_component_projection IM i) tr)constrained_state_prop (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validatorRelDecision (no_additional_equivocations_constraint Free)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validatorRelDecision (no_additional_equivocations_constraint Free)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
l: label Free
s: state Free
om: option messageDecision (no_additional_equivocations_constraint Free l (s, om))by apply no_additional_equivocations_dec. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
l: label Free
s: state Free
m: messageDecision (no_additional_equivocations_constraint Free l (s, Some m))
We say that a validator <v> (with associated component <i>) is equivocating wrt.
to another component <j>, if there exists a message which has_been_received by
<j> but has_not_been_sent by <i>.
Definition equivocating_wrt
(v : validator)
(j : index)
(sv : state (IM (A v)))
(sj : state (IM j))
(i := A v)
: Prop
:=
exists (m : message),
sender(m) = Some v /\
has_not_been_sent (IM i) sv m /\
has_been_received (IM j) sj m.
We can now decide whether a validator is equivocating in a certain state.
Definition is_equivocating_statewise (s : composite_state IM) (v : validator) : Prop := exists (j : index), equivocating_wrt v j (s (A v)) (s j).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
s: composite_state IM
Hs: composite_initial_state_prop IM s
v: validator¬ is_equivocating_statewise s vmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
s: composite_state IM
Hs: composite_initial_state_prop IM s
v: validator¬ is_equivocating_statewise s vmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
s: composite_state IM
Hs: composite_initial_state_prop IM s
v: validator¬ (∃ (j : index) (m : message), sender m = Some v ∧ has_not_been_sent (IM (A v)) (s (A v)) m ∧ has_been_received (IM j) (s j) m)by revert Hrcv; apply has_been_received_stepwise_props, Hs. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
s: composite_state IM
Hs: composite_initial_state_prop IM s
v: validator
j: index
m: message
Hsender: sender m = Some v
Hnbs: has_not_been_sent (IM (A v)) (s (A v)) m
Hrcv: has_been_received (IM j) (s j) mFalse
For the equivocation sum fault to be computable, we require that
our is_equivocating property is decidable. The current implementation
refers to is_equivocating_statewise, but this might change
in the future.
Definition equivocation_dec_statewise (Hdec : RelDecision is_equivocating_statewise) : BasicEquivocation (composite_state IM) validator Cv threshold := {| state_validators := fun _ => list_to_set (enum validator); is_equivocating := is_equivocating_statewise; is_equivocating_dec := Hdec |}. Definition equivocation_fault_constraint (Dec : BasicEquivocation (composite_state IM) validator Cv threshold) (l : composite_label IM) (som : composite_state IM * option message) : Prop := let (s', om') := (composite_transition IM l som) in not_heavy s'.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_sent (IM i) (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ output item = Some mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_sent (IM i) (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ output item = Some mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_sent (IM i) (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ output item = Some mby eexists _, _. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_sent (IM i) (s i) m
s_item: state (composite_vlsm IM constraint)
x: index
l: label (IM x)
input: option message
destination: state (composite_vlsm IM constraint)
output: option message
Ht: input_valid_transition_item (composite_vlsm IM constraint) s_item {| l := existT x l; input := input; destination := destination; output := output |}
Hfutures: in_futures (composite_vlsm IM constraint) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}) s
Hi: projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}) = i
Hselected: composite_message_selector m {| l := existT x l; input := input; destination := destination; output := output |}∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (VLSM.destination item) s ∧ projT1 (VLSM.l item) = i ∧ VLSM.output item = Some mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_received (IM i) (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ input item = Some mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_received (IM i) (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ input item = Some mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_received (IM i) (s i) m∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (destination item) s ∧ projT1 (l item) = i ∧ input item = Some mby eexists _, _. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Horacle: has_been_received (IM i) (s i) m
s_item: state (composite_vlsm IM constraint)
x: index
l: label (IM x)
input: option message
destination: state (composite_vlsm IM constraint)
output: option message
Ht: input_valid_transition_item (composite_vlsm IM constraint) s_item {| l := existT x l; input := input; destination := destination; output := output |}
Hfutures: in_futures (composite_vlsm IM constraint) (VLSM.destination {| l := existT x l; input := input; destination := destination; output := output |}) s
Hi: projT1 (VLSM.l {| l := existT x l; input := input; destination := destination; output := output |}) = i
Hselected: composite_message_selector m {| l := existT x l; input := input; destination := destination; output := output |}∃ (s_item : state X) (item : transition_item), input_valid_transition_item X s_item item ∧ in_futures X (VLSM.destination item) s ∧ projT1 (VLSM.l item) = i ∧ VLSM.input item = Some mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hsent: has_been_sent (IM i) (s i) m∃ s_m : state X, in_futures X s_m s ∧ can_produce (preloaded_with_all_messages_vlsm (IM i)) (s_m i) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hsent: has_been_sent (IM i) (s i) m∃ s_m : state X, in_futures X s_m s ∧ can_produce (preloaded_with_all_messages_vlsm (IM i)) (s_m i) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
li: label (IM i)
input: option message
destination: composite_state IM
Hsent: has_been_sent (IM i) (s i) m
s_item: composite_state IM
Ht: input_valid_transition_item (composite_vlsm IM constraint) s_item {| l := existT i li; input := input; destination := destination; output := Some m |}
Hfutures: in_futures (composite_vlsm IM constraint) destination s∃ s_m : composite_state IM, in_futures X s_m s ∧ can_produce (preloaded_with_all_messages_vlsm (IM i)) (s_m i) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
li: label (IM i)
input: option message
destination: composite_state IM
Hsent: has_been_sent (IM i) (s i) m
s_item: composite_state IM
Ht: input_valid_transition_item (composite_vlsm IM constraint) s_item {| l := existT i li; input := input; destination := destination; output := Some m |}
Hfutures: in_futures (composite_vlsm IM constraint) destination scan_produce (preloaded_with_all_messages_vlsm (IM i)) (destination i) mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
li: label (IM i)
input: option message
destination: composite_state IM
Hsent: has_been_sent (IM i) (s i) m
s_item: composite_state IM
Hfutures: in_futures (composite_vlsm IM constraint) destination s
Ht: input_valid_transition {| vlsm_type := composite_type IM; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm IM) |} (existT i li) (s_item, input) (destination, Some m)can_produce (preloaded_with_all_messages_vlsm (IM i)) (destination i) mby apply (composite_project_label_eq IM). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
li: label (IM i)
input: option message
destination: composite_state IM
Hsent: has_been_sent (IM i) (s i) m
s_item: composite_state IM
Hfutures: in_futures (composite_vlsm IM constraint) destination s
Ht: input_valid_transition {| vlsm_type := composite_type IM; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm IM) |} (existT i li) (s_item, input) (destination, Some m)composite_project_label IM i (existT i li) = Some ?Goal0message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mby apply (sent_valid X s); [| exists i]. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mby eapply sent_valid; [| exists i]. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mby eapply received_valid; [| exists i]. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mby eapply received_valid; [| exists i]. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
i: index
m: message
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hsent: composite_has_been_sent s mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hsent: composite_has_been_sent s mvalid_message_prop X mby apply messages_sent_from_component_of_valid_state_are_valid with s i. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
seed: message → Prop
X:= preloaded_vlsm (composite_vlsm IM constraint) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hsent: composite_has_been_sent s mvalid_message_prop X mby eapply sent_valid. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
seed: message → Prop
X:= preloaded_vlsm (composite_vlsm IM constraint) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hsent: composite_has_been_sent s mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
seed: message → Prop
X:= preloaded_vlsm (composite_vlsm IM constraint) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hreceived: composite_has_been_received s mvalid_message_prop X mby eapply received_valid. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
seed: message → Prop
X:= preloaded_vlsm (composite_vlsm IM constraint) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hreceived: composite_has_been_received s mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hobserved: composite_has_been_directly_observed s mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hobserved: composite_has_been_directly_observed s mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_received (IM i) (s i) m ∨ has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) m
H11: ∀ s : state (preloaded_with_all_messages_vlsm (IM i)), constrained_state_prop (IM i) s → ∀ m : message, has_been_directly_observed (IM i) s m → has_been_received (IM i) s m ∨ has_been_sent (IM i) s mconstrained_state_prop (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_received (IM i) (s i) m ∨ has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mby eapply messages_received_from_component_of_valid_state_are_valid.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mby eapply messages_sent_from_component_of_valid_state_are_valid.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mby eapply valid_state_project_preloaded. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) m
H11: ∀ s : state (preloaded_with_all_messages_vlsm (IM i)), constrained_state_prop (IM i) s → ∀ m : message, has_been_directly_observed (IM i) s m → has_been_received (IM i) s m ∨ has_been_sent (IM i) s mconstrained_state_prop (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hobserved: composite_has_been_directly_observed s mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
Hobserved: composite_has_been_directly_observed s mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_received (IM i) (s i) m ∨ has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) m
H11: ∀ s : state (preloaded_with_all_messages_vlsm (IM i)), constrained_state_prop (IM i) s → ∀ m : message, has_been_directly_observed (IM i) s m → has_been_received (IM i) s m ∨ has_been_sent (IM i) s mconstrained_state_prop (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_received (IM i) (s i) m ∨ has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mby eapply preloaded_messages_received_from_component_of_valid_state_are_valid_free.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hreceived: has_been_received (IM i) (s i) mvalid_message_prop X mby eapply preloaded_messages_sent_from_component_of_valid_state_are_valid_free.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hsent: has_been_sent (IM i) (s i) mvalid_message_prop X mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) m
H11: ∀ s : state (preloaded_with_all_messages_vlsm (IM i)), constrained_state_prop (IM i) s → ∀ m : message, has_been_directly_observed (IM i) s m → has_been_received (IM i) s m ∨ has_been_sent (IM i) s mconstrained_state_prop (IM i) (s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) m
H11: ∀ s : state (preloaded_with_all_messages_vlsm (IM i)), constrained_state_prop (IM i) s → ∀ m : message, has_been_directly_observed (IM i) s m → has_been_received (IM i) s m ∨ has_been_sent (IM i) s mcomposite_constrained_state_prop IM sby apply preloaded_vlsm_incl_preloaded_with_all_messages. Qed. End sec_composite.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
Free:= free_composite_vlsm IM: VLSM message
H0: ∀ i : index, HasBeenSentCapability (IM i)
H1: ∀ i : index, HasBeenReceivedCapability (IM i)
validator: Type
EqDecision1: EqDecision validator
H2: finite.Finite validator
measurable_V: Measurable validator
threshold: R
Cv: Type
H3: ElemOf validator Cv
H4: Empty Cv
H5: Singleton validator Cv
H6: Union Cv
H7: Intersection Cv
H8: Difference Cv
H9: Elements validator Cv
EqDecision2: EqDecision validator
H10: FinSet validator Cv
ReachableThreshold0: ReachableThreshold validator Cv threshold
A: validator → index
sender: message → option validator
seed: message → Prop
X:= preloaded_vlsm (free_composite_vlsm IM) seed: VLSM message
s: composite_state IM
Hs: valid_state_prop X s
m: message
i: index
Hobserved: has_been_directly_observed (IM i) (s i) m
H11: ∀ s : state (preloaded_with_all_messages_vlsm (IM i)), constrained_state_prop (IM i) s → ∀ m : message, has_been_directly_observed (IM i) s m → has_been_received (IM i) s m ∨ has_been_sent (IM i) s mVLSM_incl_part (preloaded_vlsm_machine (free_composite_vlsm IM) seed) (preloaded_vlsm_machine (free_composite_vlsm IM) (λ _ : message, True))message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messagecomposite_has_been_directly_observed IM s m ↔ composite_has_been_sent IM s m ∨ composite_has_been_received IM s mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messagecomposite_has_been_directly_observed IM s m ↔ composite_has_been_sent IM s m ∨ composite_has_been_received IM s mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messagecomposite_has_been_directly_observed IM s m → composite_has_been_sent IM s m ∨ composite_has_been_received IM s mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messagecomposite_has_been_sent IM s m ∨ composite_has_been_received IM s m → composite_has_been_directly_observed IM s mby intros [i [Hs | Hr]]; [left | right]; exists i.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messagecomposite_has_been_directly_observed IM s m → composite_has_been_sent IM s m ∨ composite_has_been_received IM s mby intros [[i Hs] | [i Hr]]; exists i; [left | right]. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
H: ∀ i : index, HasBeenSentCapability (IM i)
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
s: composite_state IM
m: messagecomposite_has_been_sent IM s m ∨ composite_has_been_received IM s m → composite_has_been_directly_observed IM s 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)
s: state (free_composite_vlsm IM)
m: messagecomposite_has_been_directly_observed IM s m ↔ has_been_directly_observed (free_composite_vlsm IM) s 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)
s: state (free_composite_vlsm IM)
m: messagecomposite_has_been_directly_observed IM s m ↔ has_been_directly_observed (free_composite_vlsm IM) s mby apply composite_has_been_directly_observed_sent_received_iff. 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)
s: state (free_composite_vlsm IM)
m: messagecomposite_has_been_directly_observed IM s m ↔ composite_has_been_sent IM s m ∨ composite_has_been_received IM s 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)
s: composite_state IM
i: index
m: messagehas_been_directly_observed (IM i) (s i) m → composite_has_been_directly_observed IM s mby exists i. 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)
s: composite_state IM
i: index
m: messagehas_been_directly_observed (IM i) (s i) m → composite_has_been_directly_observed IM s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: messagecomposite_has_been_directly_observed IM (lift_to_composite_state' IM i s) m ↔ has_been_directly_observed (IM i) s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: messagecomposite_has_been_directly_observed IM (lift_to_composite_state' IM i s) m ↔ has_been_directly_observed (IM i) s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM messagecomposite_has_been_directly_observed IM (lift_to_composite_state' IM i s) m ↔ has_been_directly_observed (IM i) s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM messageconstrained_state_prop Free (lift_to_composite_state' IM i 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)composite_has_been_directly_observed IM (lift_to_composite_state' IM i s) m ↔ has_been_directly_observed (IM i) s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM messageconstrained_state_prop Free (lift_to_composite_state' IM i s)apply valid_state_preloaded_composite_free_lift.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)
i: index
s: state (IM i)
m: message
Free:= free_composite_vlsm IM: VLSM messageconstrained_state_prop (IM i) s → constrained_state_prop Free (lift_to_composite_state' IM i 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)composite_has_been_directly_observed IM (lift_to_composite_state' IM i s) m ↔ has_been_directly_observed (IM i) s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: composite_has_been_directly_observed IM (lift_to_composite_state' IM i s) mhas_been_directly_observed (IM i) s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: has_been_directly_observed (IM i) s mcomposite_has_been_directly_observed IM (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: composite_has_been_directly_observed IM (lift_to_composite_state' IM i s) mhas_been_directly_observed (IM i) s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: composite_has_been_directly_observed IM (lift_to_composite_state' IM i s) mselected_message_exists_in_all_preloaded_traces (IM i) item_sends_or_receives s 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: composite_has_been_directly_observed IM (lift_to_composite_state' IM i s) m
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s trtrace_has_message item_sends_or_receives m trmessage, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: selected_message_exists_in_all_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) m
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s trtrace_has_message item_sends_or_receives m trmessage, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: selected_message_exists_in_all_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) m
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)trace_has_message item_sends_or_receives m trmessage, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
Hobs: trace_has_message item_sends_or_receives m (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)trace_has_message item_sends_or_receives m trmessage, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
Hobs: trace_has_message item_sends_or_receives m (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ x : transition_item, x ∈ tr ∧ item_sends_or_receives m 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
Hobs: ∃ x : transition_item, x ∈ VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr ∧ item_sends_or_receives m x
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ x : transition_item, x ∈ tr ∧ item_sends_or_receives m 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
composite_item: transition_item
Hcomposite_item: composite_item ∈ VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr
Hx: item_sends_or_receives m composite_item
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ x : transition_item, x ∈ tr ∧ item_sends_or_receives m 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
composite_item, item: transition_item
Hcomposite_item: composite_item = pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm (IM i)) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) item
Hitem: item ∈ tr
Hx: item_sends_or_receives m composite_item
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ x : transition_item, x ∈ tr ∧ item_sends_or_receives m 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
composite_item, item: transition_item
Hcomposite_item: composite_item = pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm (IM i)) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) item
Hitem: item ∈ tr
Hx: item_sends_or_receives m composite_item
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)item ∈ tr ∧ item_sends_or_receives m itemmessage, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
composite_item, item: transition_item
Hcomposite_item: composite_item = pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm (IM i)) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) item
Hitem: item ∈ tr
Hx: item_sends_or_receives m composite_item
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)item_sends_or_receives m itemby destruct item.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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
tr: list transition_item
item: transition_item
Hitem: item ∈ tr
Hx: item_sends_or_receives m (pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm (IM i)) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) item)
is: state (preloaded_with_all_messages_vlsm (IM i))
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)item_sends_or_receives m itemmessage, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: has_been_directly_observed (IM i) s mcomposite_has_been_directly_observed IM (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: has_been_directly_observed (IM i) s mselected_message_exists_in_all_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: has_been_directly_observed (IM i) s mselected_message_exists_in_some_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: selected_message_exists_in_all_preloaded_traces (IM i) item_sends_or_receives s mselected_message_exists_in_some_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
Hobs: selected_message_exists_in_some_preloaded_traces (IM i) item_sends_or_receives s mselected_message_exists_in_some_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hobs: trace_has_message item_sends_or_receives m trselected_message_exists_in_some_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hobs: trace_has_message item_sends_or_receives m tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)selected_message_exists_in_some_preloaded_traces (free_composite_vlsm IM) item_sends_or_receives (lift_to_composite_state' IM i s) 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hobs: trace_has_message item_sends_or_receives m tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ (tr0 : list transition_item) (_ : finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) ?start (lift_to_composite_state' IM i s) tr0), trace_has_message item_sends_or_receives m tr0message, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hobs: trace_has_message item_sends_or_receives m tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ _ : finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) ?start (lift_to_composite_state' IM i s) ?tr, trace_has_message item_sends_or_receives m ?trmessage, 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hobs: trace_has_message item_sends_or_receives m tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)trace_has_message item_sends_or_receives m (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hobs: trace_has_message item_sends_or_receives m tr
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ x : transition_item, x ∈ VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr ∧ item_sends_or_receives m 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
Hobs: ∃ x : transition_item, x ∈ tr ∧ item_sends_or_receives m x
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ x : transition_item, x ∈ VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr ∧ item_sends_or_receives m 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
item: transition_item
Hitem: item ∈ tr
Hx: item_sends_or_receives m item
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ x : transition_item, x ∈ VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr ∧ item_sends_or_receives m 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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
item: transition_item
Hitem: item ∈ tr
Hx: item_sends_or_receives m item
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)lift_to_composite_transition_item' IM i item ∈ VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr ∧ item_sends_or_receives m (lift_to_composite_transition_item' IM i item)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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
item: transition_item
Hitem: item ∈ tr
Hx: item_sends_or_receives m item
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)lift_to_composite_transition_item' IM i item ∈ VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) trby exists item. Qed. Section sec_CompositeComputableMessages. Context `{EqDecision message} `{finite.Finite index} (IM : index -> VLSM message) (indexed_oracle_set : forall i, state (IM i) -> set message) (indexed_message_selector : forall i, message -> transition_item (IM i) -> Prop) (Free := free_composite_vlsm IM) . Definition composite_oracle_set (s : composite_state IM) : set message := concat (map (fun i => indexed_oracle_set i (s i)) (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)
i: index
s: state (IM i)
Hs: constrained_state_prop (IM i) s
m: message
Free:= free_composite_vlsm IM: VLSM message
Hlift_s: constrained_state_prop Free (lift_to_composite_state' IM i s)
is: state (preloaded_with_all_messages_vlsm (IM i))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (IM i)) is s tr
item: transition_item
Hitem: item ∈ tr
Hx: item_sends_or_receives m item
Hpre_tr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_state' IM i is) (lift_to_composite_state' IM i s) (VLSM_embedding_finite_trace_project (lift_to_composite_preloaded_VLSM_embedding IM i) tr)∃ y : transition_item, lift_to_composite_transition_item' IM i item = pre_VLSM_embedding_transition_item_project (preloaded_with_all_messages_vlsm (IM i)) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_to_composite_label IM i) (lift_to_composite_state' IM i) y ∧ y ∈ trmessage: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message∀ (s : composite_state IM) (m : message), m ∈ composite_oracle_set s ↔ (∃ i : index, m ∈ indexed_oracle_set i (s i))message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message∀ (s : composite_state IM) (m : message), m ∈ composite_oracle_set s ↔ (∃ i : index, m ∈ indexed_oracle_set i (s i))message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message
s: composite_state IM
m: message(∃ x : list message, (∃ x0 : index, indexed_oracle_set x0 (s x0) = x ∧ In x0 (enum index)) ∧ In m x) → ∃ i : index, In m (indexed_oracle_set i (s i))message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message
s: composite_state IM
m: message(∃ i : index, In m (indexed_oracle_set i (s i))) → ∃ x : list message, (∃ x0 : index, indexed_oracle_set x0 (s x0) = x ∧ In x0 (enum index)) ∧ In m xby intros (? & (? & <- & _) & ?); eexists.message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message
s: composite_state IM
m: message(∃ x : list message, (∃ x0 : index, indexed_oracle_set x0 (s x0) = x ∧ In x0 (enum index)) ∧ In m x) → ∃ i : index, In m (indexed_oracle_set i (s i))by intros []; repeat esplit; [apply elem_of_list_In, elem_of_enum |]. Qed.message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message
s: composite_state IM
m: message(∃ i : index, In m (indexed_oracle_set i (s i))) → ∃ x : list message, (∃ x0 : index, indexed_oracle_set x0 (s x0) = x ∧ In x0 (enum index)) ∧ In m xmessage: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message
Hcmos: ∀ i : index, computable_messages_oracle (IM i) (indexed_oracle_set i) (indexed_message_selector i)computable_messages_oracle Free composite_oracle_set (composite_message_selector IM (message_selectors:=indexed_message_selector))by constructor; intros ; setoid_rewrite elem_of_composite_oracle_set ; apply free_composite_stepwise_props with (message_selectors := indexed_message_selector) (oracles := fun (i : index) (s : state (IM i)) (m : message) => m ∈ indexed_oracle_set i s) ; [| done | | done]; intro; apply Hcmos. Qed. End sec_CompositeComputableMessages. Section sec_composite_computable_sent_received_observed. Context `{EqDecision message} `{finite.Finite index} (IM : index -> VLSM message) `{forall i, ComputableSentMessages (IM i)} `{forall i, ComputableReceivedMessages (IM i)} . Definition composite_received_messages_set : composite_state IM -> list message := composite_oracle_set IM (fun i => received_messages_set). Definition composite_sent_messages_set : composite_state IM -> list message := composite_oracle_set IM (fun i => sent_messages_set). Definition composite_observed_messages_set (s : composite_state IM) : list message := composite_sent_messages_set s ++ composite_received_messages_set s.message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
indexed_oracle_set: ∀ i : index, state (IM i) → set message
indexed_message_selector: ∀ i : index, message → transition_item → Prop
Free:= free_composite_vlsm IM: VLSM message
Hcmos: ∀ i : index, computable_messages_oracle (IM i) (indexed_oracle_set i) (indexed_message_selector i)computable_messages_oracle Free composite_oracle_set (composite_message_selector IM (message_selectors:=indexed_message_selector))message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_received IM s m ↔ m ∈ composite_received_messages_set smessage: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_received IM s m ↔ m ∈ composite_received_messages_set sby split; intros [i Hi]; exists i; apply has_been_received_messages_set_iff. Qed.message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_received IM s m ↔ (∃ i : index, m ∈ received_messages_set (s i))message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_sent IM s m ↔ m ∈ composite_sent_messages_set smessage: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_sent IM s m ↔ m ∈ composite_sent_messages_set sby split; intros [i Hi]; exists i; apply elem_of_sent_messages_set. Qed.message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_sent IM s m ↔ (∃ i : index, m ∈ sent_messages_set (s i))message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_directly_observed IM s m ↔ m ∈ composite_observed_messages_set smessage: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)∀ (s : composite_state IM) (m : message), composite_has_been_directly_observed IM s m ↔ m ∈ composite_observed_messages_set smessage: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)
s: composite_state IM
m: messagecomposite_has_been_directly_observed IM s m ↔ m ∈ composite_observed_messages_set sby rewrite elem_of_app, composite_has_been_directly_observed_sent_received_iff, elem_of_composite_sent_messages_set, elem_of_composite_received_messages_set. Qed. End sec_composite_computable_sent_received_observed. Section sec_cannot_resend_message. Context {message : Type} `{EqDecision message} (X : VLSM message) `{HasBeenSentCapability message X} `{HasBeenReceivedCapability message X} . Definition state_received_not_sent (s : state X) (m : message) : Prop := has_been_received X s m /\ ~ has_been_sent X s m.message: Type
EqDecision0: EqDecision message
index: Type
EqDecision1: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, ComputableSentMessages (IM i)
H1: ∀ i : index, ComputableReceivedMessages (IM i)
s: composite_state IM
m: messagecomposite_has_been_directly_observed IM s m ↔ m ∈ composite_sent_messages_set s ++ composite_received_messages_set smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s trstate_received_not_sent s m ↔ trace_received_not_sent_before_or_after tr mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s trstate_received_not_sent s m ↔ trace_received_not_sent_before_or_after tr mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X sstate_received_not_sent s m ↔ trace_received_not_sent_before_or_after tr mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: has_been_received X s m
Hnbsm: ¬ has_been_sent X s mtrace_received_not_sent_before_or_after tr mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m trstate_received_not_sent s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: has_been_received X s m
Hnbsm: ¬ has_been_sent X s mtrace_received_not_sent_before_or_after tr mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: selected_message_exists_in_all_preloaded_traces X (field_selector input) s m
Hnbsm: ¬ has_been_sent X s mtrace_received_not_sent_before_or_after tr mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ has_been_sent X s mtrace_received_not_sent_before_or_after tr mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ has_been_sent X s m¬ trace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ has_been_sent X s m
Hbsm: trace_has_message (field_selector output) m trFalsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ has_been_sent X s m
Hbsm: trace_has_message (field_selector output) m trhas_been_sent X s mby apply has_been_sent_consistency; [.. | exists is, tr, Htr].message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ has_been_sent X s m
Hbsm: trace_has_message (field_selector output) m trselected_message_exists_in_all_preloaded_traces X (field_selector output) s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m trstate_received_not_sent s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m trhas_been_received X s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m tr¬ has_been_sent X s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m trhas_been_received X s mby apply has_been_received_consistency; [.. | exists is, tr, Htr].message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m trselected_message_exists_in_all_preloaded_traces X (field_selector input) s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m tr¬ has_been_sent X s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m tr
Hbsm: has_been_sent X s mFalseby apply proper_sent in Hbsm; [eapply Hbsm |]. Qed. Definition state_received_not_sent_invariant (s : state X) (P : message -> Prop) : Prop := forall m, state_received_not_sent s m -> P m.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
m: message
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s tr
Hs: constrained_state_prop X s
Hbrm: trace_has_message (field_selector input) m tr
Hnbsm: ¬ trace_has_message (field_selector output) m tr
Hbsm: has_been_sent X s mtrace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
P: message → Prop
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s trstate_received_not_sent_invariant s P ↔ trace_received_not_sent_before_or_after_invariant tr Pby split; intros Hinv m Hm ; apply Hinv ; apply (state_received_not_sent_trace_iff m s is tr Htr). Qed.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
P: message → Prop
s, is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_constrained_trace_init_to X is s trstate_received_not_sent_invariant s P ↔ trace_received_not_sent_before_or_after_invariant tr P
A sent message cannot have been previously sent or received.
Definition cannot_resend_message_stepwise_prop : Prop := forall l s oim s' m, input_constrained_transition X l (s, oim) (s', Some m) -> ~ has_been_sent X s m /\ ~ has_been_received X s' m.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s1, s2: state (preloaded_with_all_messages_vlsm X)
Hfuture: in_futures (preloaded_with_all_messages_vlsm X) s1 s2∀ m : message, state_received_not_sent s1 m → state_received_not_sent s2 mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s1, s2: state (preloaded_with_all_messages_vlsm X)
Hfuture: in_futures (preloaded_with_all_messages_vlsm X) s1 s2∀ m : message, state_received_not_sent s1 m → state_received_not_sent s2 mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s1, s2: state (preloaded_with_all_messages_vlsm X)
Hfuture: in_futures (preloaded_with_all_messages_vlsm X) s1 s2
m: message
Hm: state_received_not_sent s1 mstate_received_not_sent s2 mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s1, s2: state (preloaded_with_all_messages_vlsm X)
tr2: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s1 s2 tr2
m: message
Hm: state_received_not_sent s1 mstate_received_not_sent s2 mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s, f: state (preloaded_with_all_messages_vlsm X)
tl: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s f tl
s': state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm X) l (s', iom) (s, oom)
m: message
Hm: state_received_not_sent s' m
IHHtr2: state_received_not_sent s m → state_received_not_sent f mstate_received_not_sent f mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s, f: state (preloaded_with_all_messages_vlsm X)
tl: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s f tl
s': state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm X) l (s', iom) (s, oom)
m: message
Hm: state_received_not_sent s' mstate_received_not_sent s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s, f: state (preloaded_with_all_messages_vlsm X)
tl: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s f tl
s': state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm X) l (s', iom) (s, oom)
m: message
Hm: state_received_not_sent s' m
Hrupd: has_been_received X s m ↔ iom = Some m ∨ has_been_received X s' mstate_received_not_sent s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s, f: state (preloaded_with_all_messages_vlsm X)
tl: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s f tl
s': state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm X) l (s', iom) (s, oom)
m: message
Hm: state_received_not_sent s' m
Hrupd: has_been_received X s m ↔ iom = Some m ∨ has_been_received X s' m
Hmupd: has_been_sent X s m ↔ oom = Some m ∨ has_been_sent X s' mstate_received_not_sent s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s, f: state (preloaded_with_all_messages_vlsm X)
tl: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s f tl
s': state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm X) l (s', iom) (s, oom)
m: message
Hr: has_been_received X s' m
Hs: ¬ has_been_sent X s' m
Hrupd: has_been_received X s m ↔ iom = Some m ∨ has_been_received X s' m
Hmupd: has_been_sent X s m ↔ oom = Some m ∨ has_been_sent X s' mstate_received_not_sent s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s, f: state (preloaded_with_all_messages_vlsm X)
tl: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s f tl
s': state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm X) l (s', iom) (s, oom)
m: message
Hr: has_been_received X s' m
Hs: ¬ has_been_sent X s' m
Hrupd: has_been_received X s m ↔ iom = Some m ∨ has_been_received X s' m
Hmupd: has_been_sent X s m ↔ oom = Some m ∨ has_been_sent X s' m¬ has_been_sent X s mby apply Hno_resend in Ht; itauto. Qed. Context (Hno_resend : cannot_resend_message_stepwise_prop) .message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
s, f: state (preloaded_with_all_messages_vlsm X)
tl: list transition_item
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) s f tl
s': state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
Ht: input_valid_transition (preloaded_with_all_messages_vlsm X) l (s', iom) (s, Some m)
Hr: has_been_received X s' m
Hs: ¬ has_been_sent X s' m
Hrupd: has_been_received X s m ↔ iom = Some m ∨ has_been_received X s' m
Hmupd: has_been_sent X s m ↔ Some m = Some m ∨ has_been_sent X s' mFalsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
om': option message
Ht: input_constrained_transition X l ( s, Some m) (s', om')om' ≠ Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
om': option message
Ht: input_constrained_transition X l ( s, Some m) (s', om')om' ≠ Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
m': message
Ht: input_constrained_transition X l ( s, Some m) (s', Some m')Some m' ≠ Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
m': message
Ht: input_constrained_transition X l ( s, Some m) (s', Some m')
Heq: Some m' = Some mFalsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
m': message
Ht: input_constrained_transition X l ( s, Some m) (s', Some m')
Heq: Some m' = Some m
H2: m' = mFalsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
Heq: Some m = Some m
Ht: input_constrained_transition X l ( s, Some m) (s', Some m)Falsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
Ht: input_constrained_transition X l ( s, Some m) (s', Some m)Falsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
Ht: input_constrained_transition X l ( s, Some m) (s', Some m)
Hnbr_m: ¬ has_been_received X s' mFalsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
Ht: input_constrained_transition X l ( s, Some m) (s', Some m)
Hnbr_m: ¬ has_been_received X s' mhas_been_received X s' mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
Ht: input_constrained_transition X l ( s, Some m) (s', Some m)has_been_received X s' mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s': state (preloaded_with_all_messages_vlsm X)
Ht: ∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (ts : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) s0 s' (ts ++ [{| l := l; input := Some m; destination := s'; output := Some m |}]) ∧ finite_trace_last s0 ts = shas_been_received X s' mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s', is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s' (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])
Hs: finite_trace_last is tr = shas_been_received X s' mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s', is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s' (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])
Hs: finite_trace_last is tr = s
Hlst: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) is s' (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])has_been_received X s' mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s', is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s' (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])
Hs: finite_trace_last is tr = s
Hlst: valid_state_prop (preloaded_with_all_messages_vlsm X) s'has_been_received X s' mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s', is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s' (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])
Hs: finite_trace_last is tr = s
Hlst: valid_state_prop (preloaded_with_all_messages_vlsm X) s'selected_message_exists_in_all_preloaded_traces X (field_selector input) s' mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s', is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s' (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])
Hs: finite_trace_last is tr = s
Hlst: valid_state_prop (preloaded_with_all_messages_vlsm X) s'selected_message_exists_in_some_preloaded_traces X (field_selector input) s' mby apply Exists_app; right; apply Exists_cons; left. Qed.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
l: label (preloaded_with_all_messages_vlsm X)
s: state (preloaded_with_all_messages_vlsm X)
m: message
s', is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s' (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])
Hs: finite_trace_last is tr = s
Hlst: valid_state_prop (preloaded_with_all_messages_vlsm X) s'trace_has_message (field_selector input) m (tr ++ [{| l := l; input := Some m; destination := s'; output := Some m |}])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
Htrm: trace_received_not_sent_before_or_after_invariant tr P
is: state (preloaded_with_all_messages_vlsm X)
Htr: finite_constrained_trace X is trfinite_valid_trace (preloaded_vlsm X P) is trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
Htrm: trace_received_not_sent_before_or_after_invariant tr P
is: state (preloaded_with_all_messages_vlsm X)
Htr: finite_constrained_trace X is trfinite_valid_trace (preloaded_vlsm X P) is trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after tr m → P m
is: state (preloaded_with_all_messages_vlsm X)
Htr: finite_constrained_trace X is trfinite_valid_trace (preloaded_vlsm X P) is trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after tr m → P m
is: state (preloaded_with_all_messages_vlsm X)
Htr: finite_constrained_trace X is trfinite_valid_trace_from (preloaded_vlsm X P) is trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
Htrm: ∀ m : message, trace_received_not_sent_before_or_after [] m → P m
si: state (preloaded_with_all_messages_vlsm X)
Hsi: initial_state_prop sifinite_valid_trace_from (preloaded_vlsm X P) si []message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si trfinite_valid_trace_from (preloaded_vlsm X P) si (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
Htrm: ∀ m : message, trace_received_not_sent_before_or_after [] m → P m
si: state (preloaded_with_all_messages_vlsm X)
Hsi: initial_state_prop sifinite_valid_trace_from (preloaded_vlsm X P) si []by apply initial_state_is_valid.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
Htrm: ∀ m : message, trace_received_not_sent_before_or_after [] m → P m
si: state (preloaded_with_all_messages_vlsm X)
Hsi: initial_state_prop sivalid_state_prop (preloaded_vlsm X P) simessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si trfinite_valid_trace_from (preloaded_vlsm X P) si (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si trtrace_received_not_sent_before_or_after_invariant tr Pmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr Pfinite_valid_trace_from (preloaded_vlsm X P) si (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si trtrace_received_not_sent_before_or_after_invariant tr Pmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: ¬ trace_has_message (field_selector output) m trP mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: ¬ trace_has_message (field_selector output) m trtrace_received_not_sent_before_or_after (tr ++ [x]) mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: ¬ trace_has_message (field_selector output) m tr¬ trace_has_message (field_selector output) m (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: trace_has_message (field_selector output) m (tr ++ [x])trace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) (tr ++ [x])trace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ field_selector output m x ∨ Falsetrace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ oom = Some m ∨ Falsetrace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
m: message
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ oom = Some m ∨ Falseoom ≠ Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ FalseFalsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falsehas_been_received X sf mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falsehas_been_received X (finite_trace_last si tr) mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falsetrace_has_message ?Goal1 m ?Goal4 ∨ has_been_received X ?Goal3 mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falseoracle_stepwise_props ?Goal1 (has_been_received X)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falsefinite_constrained_trace_from_to X ?Goal3 (finite_trace_last si tr) ?Goal4by left.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falsetrace_has_message ?Goal1 m ?Goal4 ∨ has_been_received X ?Goal3 mby apply has_been_received_stepwise_props.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falseoracle_stepwise_props (field_selector input) (has_been_received X)by apply valid_trace_add_default_last in Htr; apply Htr.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom: option message
l: label (preloaded_with_all_messages_vlsm X)
m: message
x:= {| l := l; input := iom; destination := sf; output := Some m |}: transition_item
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, Some m)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Hrecv: trace_has_message (field_selector input) m tr
Hsend: Exists (field_selector output m) tr ∨ Some m = Some m ∨ Falsefinite_constrained_trace_from_to X ?Goal0 (finite_trace_last si tr) trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: (∀ m : message, trace_received_not_sent_before_or_after tr m → P m) → finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr Pfinite_valid_trace_from (preloaded_vlsm X P) si (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr Pfinite_valid_trace_from (preloaded_vlsm X P) si (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr Pinput_valid_transition (preloaded_vlsm X P) l (finite_trace_last si tr, iom) (sf, oom)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
iom, oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := iom; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, iom) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr Poption_valid_message_prop (preloaded_vlsm X P) iom(* If m was sent during tr, it is valid because it was produced in a valid (by IHHtr) trace. If m was not sent during tr, *)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr Poption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr PDecision (trace_has_message (field_selector output) m tr)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P∀ x : transition_item, Decision (field_selector output m x)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
x0: transition_itemDecision (field_selector output m x0)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)by eapply valid_trace_output_is_valid.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m troption_valid_message_prop (preloaded_vlsm X P) (Some m)message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m trinitial_message_prop mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m trP mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m trtrace_received_not_sent_before_or_after (tr ++ [x]) mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m trtrace_has_message (field_selector input) m (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m tr¬ trace_has_message (field_selector output) m (tr ++ [x])by apply Exists_app; right; apply Exists_cons; left.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m trtrace_has_message (field_selector input) m (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hnot_sent: ¬ trace_has_message (field_selector output) m tr¬ trace_has_message (field_selector output) m (tr ++ [x])message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: trace_has_message (field_selector output) m (tr ++ [x])trace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: Exists (field_selector output m) (tr ++ [x])trace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
oom: option message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := oom |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, oom)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hsent: Exists (field_selector output m) tr ∨ field_selector output m x ∨ Falsetrace_has_message (field_selector output) m trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := Some m |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, Some m)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr PFalsemessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := Some m |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, Some m)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr P
Hx': ¬ has_been_sent X (finite_trace_last si tr) m ∧ ¬ has_been_received X sf mFalseby rewrite (has_been_received_step_update Hx); left. Qed.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
tr: list transition_item
sf: state (preloaded_with_all_messages_vlsm X)
m: message
l: label (preloaded_with_all_messages_vlsm X)
x:= {| l := l; input := Some m; destination := sf; output := Some m |}: transition_item
Htrm: ∀ m : message, trace_received_not_sent_before_or_after (tr ++ [x]) m → P m
si: state (preloaded_with_all_messages_vlsm X)
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) si tr
Hx: input_valid_transition (preloaded_with_all_messages_vlsm X) l (finite_trace_last si tr, Some m) ( sf, Some m)
IHHtr: finite_valid_trace_from (preloaded_vlsm X P) si tr
Htrm': trace_received_not_sent_before_or_after_invariant tr Phas_been_received X sf mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X svalid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X svalid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X s
Htr: ∃ (is : state (preloaded_with_all_messages_vlsm X)) (tr : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s trvalid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X s
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s trvalid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X s
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s tr
Hlift: trace_received_not_sent_before_or_after_invariant tr P → ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is trvalid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X s
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s tr
Hlift: ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is trvalid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X s
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s tr
Hlift: finite_valid_trace (preloaded_vlsm X P) is trvalid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X s
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s tr
Hlift: finite_valid_trace_from (preloaded_vlsm X P) is trvalid_state_prop (preloaded_vlsm X P) sby rewrite <- (valid_trace_get_last Htr). Qed.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
Hs: constrained_state_prop X s
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s tr
Hlift: valid_state_prop (preloaded_vlsm X P) (finite_trace_last is tr)valid_state_prop (preloaded_vlsm X P) smessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
Hgen: can_produce (preloaded_with_all_messages_vlsm X) s mcan_produce (preloaded_vlsm X P) s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
Hgen: can_produce (preloaded_with_all_messages_vlsm X) s mcan_produce (preloaded_vlsm X P) s mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
Hgen: can_produce (preloaded_with_all_messages_vlsm X) s m∃ (is : state (preloaded_vlsm X P)) (tr : list transition_item) (item : transition_item), finite_valid_trace (preloaded_vlsm X P) is tr ∧ last_error tr = Some item ∧ destination item = s ∧ output item = Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
Hgen: ∃ (is : state (preloaded_with_all_messages_vlsm X)) (tr : list transition_item) (item : transition_item), finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr ∧ last_error tr = Some item ∧ destination item = s ∧ output item = Some m∃ (is : state (preloaded_vlsm X P)) (tr : list transition_item) (item : transition_item), finite_valid_trace (preloaded_vlsm X P) is tr ∧ last_error tr = Some item ∧ destination item = s ∧ output item = Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some m∃ (is : state (preloaded_vlsm X P)) (tr : list transition_item) (item : transition_item), finite_valid_trace (preloaded_vlsm X P) is tr ∧ last_error tr = Some item ∧ destination item = s ∧ output item = Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some mfinite_valid_trace (preloaded_vlsm X P) is tr ∧ last_error tr = Some item ∧ destination item = s ∧ output item = Some mmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some mfinite_valid_trace (preloaded_vlsm X P) is trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some m
Hlift: trace_received_not_sent_before_or_after_invariant tr P → ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is trfinite_valid_trace (preloaded_vlsm X P) is trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
Hequiv_s: state_received_not_sent_invariant s P
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some m
Hlift: trace_received_not_sent_before_or_after_invariant tr P → ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is trtrace_received_not_sent_before_or_after_invariant tr Pmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some m
Hlift: trace_received_not_sent_before_or_after_invariant tr P → ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is trstate_received_not_sent_invariant s P → trace_received_not_sent_before_or_after_invariant tr Pmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some m
Hlift: trace_received_not_sent_before_or_after_invariant tr P → ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is trfinite_constrained_trace_init_to X is s trmessage: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some m
Hlift: trace_received_not_sent_before_or_after_invariant tr P → ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is trfinite_trace_last is tr = sby destruct Hgen as [-> [<- _]]. Qed. End sec_cannot_resend_message. Section sec_has_been_sent_irrelevance.message: Type
EqDecision0: EqDecision message
X: VLSM message
H: HasBeenSentCapability X
H0: HasBeenReceivedCapability X
Hno_resend: cannot_resend_message_stepwise_prop
P: message → Prop
s: state X
m: message
is: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
item: transition_item
Htr: finite_valid_trace (preloaded_with_all_messages_vlsm X) is tr
Hgen: last_error tr = Some item ∧ destination item = s ∧ output item = Some m
Hlift: trace_received_not_sent_before_or_after_invariant tr P → ∀ is : state (preloaded_with_all_messages_vlsm X), finite_constrained_trace X is tr → finite_valid_trace (preloaded_vlsm X P) is troption_map destination (last_error tr) = Some s
Since we have several ways of obtaining the has_been_sent property,
we sometimes need to show that they are equivalent.
Context {message : Type} (X : VLSM message) (Hbs1 : HasBeenSentCapability X) (Hbs2 : HasBeenSentCapability X) .message: Type
X: VLSM message
Hbs1, Hbs2: HasBeenSentCapability X
s: state (preloaded_with_all_messages_vlsm X)
m: message
Hs: constrained_state_prop X shas_been_sent X s m → has_been_sent X s mmessage: Type
X: VLSM message
Hbs1, Hbs2: HasBeenSentCapability X
s: state (preloaded_with_all_messages_vlsm X)
m: message
Hs: constrained_state_prop X shas_been_sent X s m → has_been_sent X s mmessage: Type
X: VLSM message
Hbs1, Hbs2: HasBeenSentCapability X
s: state (preloaded_with_all_messages_vlsm X)
m: message
Hs: constrained_state_prop X s
H: has_been_sent X s mhas_been_sent X s mby apply proper_sent. Qed. End sec_has_been_sent_irrelevance. Section sec_all_traces_to_valid_state_are_valid. Context {message : Type} {index : Type} `{finite.Finite index} (IM : index -> VLSM message) `{forall i : index, (HasBeenReceivedCapability (IM i))} (constraint : composite_label IM -> composite_state IM * option message -> Prop) (X := composite_vlsm IM constraint) (Y := free_composite_vlsm IM) (PreY := preloaded_with_all_messages_vlsm Y).message: Type
X: VLSM message
Hbs1, Hbs2: HasBeenSentCapability X
s: state (preloaded_with_all_messages_vlsm X)
m: message
Hs: constrained_state_prop X s
H: selected_message_exists_in_all_preloaded_traces X (field_selector output) s mhas_been_sent X s m
Under HasBeenReceivedCapability assumptions, and given the fact that
any valid state
Hence, given any preloaded trace leading to
s
has a valid trace leading to it,
in which all (received) messages are valid, it follows that
any message which has_been_received for state s
is valid.
s
, all messages received
within it must be valid, thus the trace itself is valid.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_constrained_trace_init_to Y is s trfinite_valid_trace_init_to Y is s trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_constrained_trace_init_to Y is s trfinite_valid_trace_init_to Y is s trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_constrained_trace_init_to Y is s trForall (λ item : transition_item, option_valid_message_prop Y (input item)) trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) sForall (λ item : transition_item, option_valid_message_prop Y (input item)) trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ troption_valid_message_prop Y (input x)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ tr
m: message
Hm: input x = Some moption_valid_message_prop Y (Some m)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ tr
m: message
Hm: input x = Some mcomposite_has_been_received IM s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ tr
m: message
Hm: input x = Some m
Hproper: has_been_received_prop Y (has_been_received Y) s mcomposite_has_been_received IM s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ tr
m: message
Hm: input x = Some m
Hproper: selected_message_exists_in_all_preloaded_traces Y (field_selector input) s m → has_been_received Y s mcomposite_has_been_received IM s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ tr
m: message
Hm: input x = Some m
Hproper: selected_message_exists_in_all_preloaded_traces Y (field_selector input) s m → has_been_received Y s mselected_message_exists_in_all_preloaded_traces Y (field_selector input) s mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ tr
m: message
Hm: input x = Some m
Hproper: selected_message_exists_in_all_preloaded_traces Y (field_selector input) s m → has_been_received Y s mselected_message_exists_in_some_preloaded_traces Y (field_selector input) s mby apply Exists_exists; eexists. Qed. End sec_all_traces_to_valid_state_are_valid. Section sec_has_been_received_in_state. Context {message : Type} (X : VLSM message) `{HasBeenReceivedCapability message X} .message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
H0: ∀ i : index, HasBeenReceivedCapability (IM i)
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
Y:= free_composite_vlsm IM: VLSM message
PreY:= preloaded_with_all_messages_vlsm Y: VLSM message
s, is: state PreY
tr: list transition_item
Hs: valid_state_prop Y s
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Y) is s tr
Hspre: valid_state_prop (preloaded_with_all_messages_vlsm Y) s
x: transition_item
H1: x ∈ tr
m: message
Hm: input x = Some m
Hproper: selected_message_exists_in_all_preloaded_traces Y (field_selector input) s m → has_been_received Y s mtrace_has_message (field_selector input) m trmessage: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: messagevalid_state_prop X s1 → has_been_received X s1 m → ∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: messagevalid_state_prop X s1 → has_been_received X s1 m → ∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
Hhbr: has_been_received X s1 m∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
Hhbr: has_been_received X s1 m
Hetr: ∃ (is : state X) (tr : list transition_item), finite_valid_trace_init_to X is s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
Hhbr: has_been_received X s1 m
ist: state X
tr: list transition_item
Hetr: finite_valid_trace_init_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
Hhbr: selected_message_exists_in_all_preloaded_traces X (field_selector input) s1 m
ist: state X
tr: list transition_item
Hetr: finite_valid_trace_init_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
Hhbr: specialized_selected_message_exists_in_all_traces (preloaded_with_all_messages_vlsm X) (field_selector input) s1 m
ist: state X
tr: list transition_item
Hetr: finite_valid_trace_init_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
Hhbr: ∀ (start : state (preloaded_with_all_messages_vlsm X)) (tr : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) start s1 tr → trace_has_message (field_selector input) m tr
ist: state X
tr: list transition_item
Hetr: finite_valid_trace_init_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr → trace_has_message (field_selector input) m tr
Hetr: finite_valid_trace_init_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist → trace_has_message (field_selector input) m tr
Hetr: finite_valid_trace_init_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist → trace_has_message (field_selector input) m tr
Hetr: finite_valid_trace_from_to X ist s1 tr ∧ initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist → trace_has_message (field_selector input) m tr
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist → trace_has_message (field_selector input) m tr
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist
Hfptf': finite_constrained_trace_from_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: trace_has_message (field_selector input) m tr
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist
Hfptf': finite_constrained_trace_from_to X ist s1 tr∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: trace_has_message (field_selector input) m tr
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: Exists (field_selector input m) tr
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: Exists (λ item : transition_item, input item = Some m) tr
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
Hhbr: ∃ x : transition_item, x ∈ tr ∧ input x = Some m
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
Htritemin: tritem ∈ tr
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
Htritemin: ∃ l1 l2 : list transition_item, tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to X ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to X ist s1 (l1 ++ tritem :: l2)
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1 ∧ finite_valid_trace_from_to X (finite_trace_last ist l1) s1 (tritem :: l2)
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Htr1: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to X (finite_trace_last ist l1) s1 (tritem :: l2)
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
input: option message
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtritem: tritem = {| l := l; input := input; destination := destination; output := output |}
Heqtr: tr = l1 ++ {| l := l; input := input; destination := destination; output := output |} :: l2
Hintritem: VLSM.input {| l := l; input := input; destination := destination; output := output |} = Some m
Htr1: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to X (finite_trace_last ist l1) s1 ({| l := l; input := input; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), VLSM.input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
input: option message
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtritem: tritem = {| l := l; input := input; destination := destination; output := output |}
Heqtr: tr = l1 ++ {| l := l; input := input; destination := destination; output := output |} :: l2
Hintritem: input = Some m
Htr1: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to X (finite_trace_last ist l1) s1 ({| l := l; input := input; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), VLSM.input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to X (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (s0 : state X) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to X (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (item : transition_item) (tr0 : list transition_item), input item = Some m ∧ finite_valid_trace_from_to X ?s0 s1 (item :: tr0)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to X (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ tr0 : list transition_item, input ?item = Some m ∧ finite_valid_trace_from_to X ?s0 s1 (?item :: tr0)by split; [| apply Htr2]. Qed.message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state X
m: message
Hpsp: valid_state_prop X s1
ist: state X
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to X ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to X (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop istinput ?item = Some m ∧ finite_valid_trace_from_to X ?s0 s1 (?item :: ?tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: messageconstrained_state_prop X s1 → has_been_received X s1 m → ∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: messageconstrained_state_prop X s1 → has_been_received X s1 m → ∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
Hhbr: has_been_received X s1 m∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
Hhbr: has_been_received X s1 m
Hetr: ∃ (is : state (preloaded_with_all_messages_vlsm X)) (tr : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) is s1 tr∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
Hhbr: has_been_received X s1 m
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hetr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
Hhbr: selected_message_exists_in_all_preloaded_traces X (field_selector input) s1 m
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hetr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
Hhbr: specialized_selected_message_exists_in_all_traces (preloaded_with_all_messages_vlsm X) (field_selector input) s1 m
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hetr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
Hhbr: ∀ (start : state (preloaded_with_all_messages_vlsm X)) (tr : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) start s1 tr → trace_has_message (field_selector input) m tr
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hetr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr → trace_has_message (field_selector input) m tr
Hetr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist → trace_has_message (field_selector input) m tr
Hetr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm X) ist s1 tr∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist → trace_has_message (field_selector input) m tr
Hetr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr ∧ initial_state_prop ist → trace_has_message (field_selector input) m tr
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: trace_has_message (field_selector input) m tr
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: Exists (field_selector input m) tr
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: Exists (λ item : transition_item, input item = Some m) tr
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
Hhbr: ∃ x : transition_item, x ∈ tr ∧ input x = Some m
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
Htritemin: tritem ∈ tr
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
Htritemin: ∃ l1 l2 : list transition_item, tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 tr
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist s1 (l1 ++ tritem :: l2)
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Hfptf: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1 ∧ finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 (tritem :: l2)
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
Heqtr: tr = l1 ++ tritem :: l2
Hintritem: input tritem = Some m
Htr1: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 (tritem :: l2)
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
input: option message
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtritem: tritem = {| l := l; input := input; destination := destination; output := output |}
Heqtr: tr = l1 ++ {| l := l; input := input; destination := destination; output := output |} :: l2
Hintritem: VLSM.input {| l := l; input := input; destination := destination; output := output |} = Some m
Htr1: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 ({| l := l; input := input; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), VLSM.input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
input: option message
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtritem: tritem = {| l := l; input := input; destination := destination; output := output |}
Heqtr: tr = l1 ++ {| l := l; input := input; destination := destination; output := output |} :: l2
Hintritem: input = Some m
Htr1: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 ({| l := l; input := input; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), VLSM.input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (s0 : state (preloaded_with_all_messages_vlsm X)) (item : transition_item) (tr : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X s0 s1 (item :: tr)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ (item : transition_item) (tr0 : list transition_item), input item = Some m ∧ finite_constrained_trace_from_to X ?s0 s1 (item :: tr0)message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop ist∃ tr0 : list transition_item, input ?item = Some m ∧ finite_constrained_trace_from_to X ?s0 s1 (?item :: tr0)by split; [| apply Htr2]. Qed. End sec_has_been_received_in_state.message: Type
X: VLSM message
H: HasBeenReceivedCapability X
s1: state (preloaded_with_all_messages_vlsm X)
m: message
Hpsp: constrained_state_prop X s1
ist: state (preloaded_with_all_messages_vlsm X)
tr: list transition_item
tritem: transition_item
l1, l2: list transition_item
l: label (preloaded_with_all_messages_vlsm X)
destination: state (preloaded_with_all_messages_vlsm X)
output: option message
Heqtr: tr = l1 ++ {| l := l; input := Some m; destination := destination; output := output |} :: l2
Heqtritem: tritem = {| l := l; input := Some m; destination := destination; output := output |}
Htr1: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) ist (finite_trace_last ist l1) l1
Htr2: finite_valid_trace_from_to (preloaded_with_all_messages_vlsm X) (finite_trace_last ist l1) s1 ({| l := l; input := Some m; destination := destination; output := output |} :: l2)
Hisp: initial_state_prop istinput ?item = Some m ∧ finite_constrained_trace_from_to X ?s0 s1 (?item :: ?tr)