From Coq Require Import FunctionalExtensionality Lia. From stdpp Require Import prelude finite. From VLSM.Lib Require Import Preamble ListExtras StdppListSet StdppExtras. From VLSM.Core Require Import VLSM VLSMProjections ProjectionTraces Composition Validator. From VLSM.Core Require Import Equivocation EquivocationProjections Equivocation.NoEquivocation.
Section sec_sub_composition. Context {message : Type} `{finite.Finite index} (IM : index -> VLSM message) (sub_index_list : list index) . Definition sub_index_prop (i : index) : Prop := i ∈ sub_index_list. #[local] Program Instance sub_index_prop_dec (i : index) : Decision (sub_index_prop i).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index∀ i : index, {sub_index_prop i} + {¬ sub_index_prop i}intros; apply decide_rel; typeclasses eauto. Qed. Definition sub_index : Type := dsig sub_index_prop. Definition sub_IM (ei : sub_index) : VLSM message := IM (proj1_sig ei).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index∀ i : index, {sub_index_prop i} + {¬ sub_index_prop i}message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
e1, e2: sub_index_prop is (dexist i e1) = s (dexist i e2)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
e1, e2: sub_index_prop is (dexist i e1) = s (dexist i e2)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
e1, e2: sub_index_prop is (i ↾ bool_decide_pack (sub_index_prop i) e1) = s (i ↾ bool_decide_pack (sub_index_prop i) e2)by apply proof_irrel. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
e1, e2: sub_index_prop ibool_decide_pack (sub_index_prop i) e2 = bool_decide_pack (sub_index_prop i) e1message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
si: state (IM i)
e1, e2: sub_index_prop istate_update sub_IM s (dexist i e1) si (dexist i e2) = simessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
si: state (IM i)
e1, e2: sub_index_prop istate_update sub_IM s (dexist i e1) si (dexist i e2) = simessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
si: state (IM i)
e1, e2: sub_index_prop i(∀ be1 be2 : (λ x : index, bool_decide (sub_index_prop x)) i, be1 = be2 → state_update sub_IM s (i ↾ be1) si (i ↾ be2) = si) → state_update sub_IM s (dexist i e1) si (dexist i e2) = simessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
si: state (IM i)
e1, e2: sub_index_prop i∀ be1 be2 : (λ x : index, bool_decide (sub_index_prop x)) i, be1 = be2 → state_update sub_IM s (i ↾ be1) si (i ↾ be2) = siby intro Heq; apply Heq, proof_irrel.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
si: state (IM i)
e1, e2: sub_index_prop i(∀ be1 be2 : (λ x : index, bool_decide (sub_index_prop x)) i, be1 = be2 → state_update sub_IM s (i ↾ be1) si (i ↾ be2) = si) → state_update sub_IM s (dexist i e1) si (dexist i e2) = siby intros; subst; state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
s: composite_state sub_IM
si: state (IM i)
e1, e2: sub_index_prop i∀ be1 be2 : (λ x : index, bool_decide (sub_index_prop x)) i, be1 = be2 → state_update sub_IM s (i ↾ be1) si (i ↾ be2) = simessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
i: index
ei: sub_index_prop i
si: state (IM i)
j: index
ej: sub_index_prop ji ≠ j → state_update sub_IM s (dexist i ei) si (dexist j ej) = s (dexist j ej)by intro Hneq; apply state_update_neq; inversion 1. Qed. Definition free_sub_vlsm_composition : VLSM message := free_composite_vlsm sub_IM. Definition seeded_free_sub_composition (messageSet : message -> Prop) := preloaded_vlsm free_sub_vlsm_composition (fun m => messageSet m \/ composite_initial_message_prop IM m). Definition composite_state_sub_projection (s : composite_state IM) : composite_state sub_IM := fun (subi : sub_index) => s (proj1_sig subi) : state (sub_IM subi).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
i: index
ei: sub_index_prop i
si: state (IM i)
j: index
ej: sub_index_prop ji ≠ j → state_update sub_IM s (dexist i ei) si (dexist j ej) = s (dexist j ej)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state IM
Hs: composite_initial_state_prop IM scomposite_initial_state_prop sub_IM (composite_state_sub_projection s)by intros [i Hi]; apply Hs. Qed. Definition composite_label_sub_projection (l : composite_label IM) (i := projT1 l) (e : sub_index_prop i) : composite_label sub_IM := existT (dexist i e) (projT2 l). Definition lift_sub_label (l : composite_label sub_IM) : composite_label IM := existT (proj1_sig (projT1 l)) (projT2 l). Definition lift_sub_state_to (s0 : composite_state IM) (s : composite_state sub_IM) : composite_state IM := fun i => match decide (sub_index_prop i) with | left e => s (dexist i e) | _ => s0 i end. Definition lift_sub_state := lift_sub_state_to (fun (n : index) => proj1_sig (vs0 (IM n))).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state IM
Hs: composite_initial_state_prop IM scomposite_initial_state_prop sub_IM (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hi: sub_index_prop ilift_sub_state_to s0 s i = s (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hi: sub_index_prop ilift_sub_state_to s0 s i = s (dexist i Hi)by case_decide; [apply sub_IM_state_pi |]. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hi: sub_index_prop imatch decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => s0 i end = s (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hni: ¬ sub_index_prop ilift_sub_state_to s0 s i = s0 iby unfold lift_sub_state_to; case_decide. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hni: ¬ sub_index_prop ilift_sub_state_to s0 s i = s0 imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IMcomposite_state_sub_projection (lift_sub_state_to s0 s) = smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IMcomposite_state_sub_projection (lift_sub_state_to s0 s) = smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
sub_i: sub_indexcomposite_state_sub_projection (lift_sub_state_to s0 s) sub_i = s sub_imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
sub_i: sub_index
i: index
Hi: sub_index_prop i
Heqsub_i: sub_i = dexist i Hicomposite_state_sub_projection (lift_sub_state_to s0 s) sub_i = s sub_imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hi: sub_index_prop icomposite_state_sub_projection (lift_sub_state_to s0 s) (dexist i Hi) = s (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hi: sub_index_prop ilift_sub_state_to s0 s (`(dexist i Hi)) = s (dexist i Hi)by rewrite lift_sub_state_to_eq with (Hi := Hi). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hi: sub_index_prop ilift_sub_state_to s0 s i = s (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hni: ¬ sub_index_prop i
si': state (IM i)state_update IM (lift_sub_state_to s0 s) i si' = lift_sub_state_to (state_update IM s0 i si') smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hni: ¬ sub_index_prop i
si': state (IM i)state_update IM (lift_sub_state_to s0 s) i si' = lift_sub_state_to (state_update IM s0 i si') smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hni: ¬ sub_index_prop i
si': state (IM i)lift_sub_state_to (state_update IM s0 i si') s = state_update IM (lift_sub_state_to s0 s) i si'message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hni: ¬ sub_index_prop i
si': state (IM i)
j: indexlift_sub_state_to (state_update IM s0 i si') s j = state_update IM (lift_sub_state_to s0 s) i si' jby destruct (decide (i = j)); subst; state_update_simpl; case_decide. Qed. #[local] Hint Rewrite @sub_IM_state_update_eq using done : state_update. #[local] Hint Rewrite @sub_IM_state_update_neq using done : state_update. #[local] Hint Rewrite @lift_sub_state_to_eq using done : state_update. #[local] Hint Rewrite @lift_sub_state_to_neq using done : state_update. #[local] Hint Rewrite @lift_sub_state_to_neq_state_update using done : state_update. Section sec_induced_sub_projection. Context (constraint : composite_label IM -> composite_state IM * option message -> Prop) (X := composite_vlsm IM constraint) . Definition composite_label_sub_projection_option (l : composite_label IM) : option (composite_label sub_IM) := match decide (projT1 l ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection l i_in) | _ => None end.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
s: composite_state sub_IM
i: index
Hni: ¬ sub_index_prop i
si': state (IM i)
j: indexmatch decide (sub_index_prop j) with | left e => s (dexist j e) | right _ => state_update IM s0 i si' j end = state_update IM (λ i : index, match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => s0 i end) i si' j
By restricting the components of a composition to a subset we obtain a
projection_induced_validator.
Definition pre_induced_sub_projection : VLSM message := pre_projection_induced_validator X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection lift_sub_label lift_sub_state.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageweak_projection_transition_consistency_None X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageweak_projection_transition_consistency_None X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
lX: label X
HlX: composite_label_sub_projection_option lX = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: input_valid_transition X lX (sX, om) (s'X, om')composite_state_sub_projection s'X = composite_state_sub_projection sXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
lX: label X
HlX: composite_label_sub_projection_option lX = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: input_valid_transition X lX (sX, om) (s'X, om')
sub_i: sub_indexcomposite_state_sub_projection s'X sub_i = composite_state_sub_projection sX sub_imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
lX: label X
HlX: composite_label_sub_projection_option lX = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: input_valid_transition X lX (sX, om) (s'X, om')
sub_i: sub_index
i: index
Hi: sub_index_prop i
Heqsub_i: sub_i = dexist i Hicomposite_state_sub_projection s'X sub_i = composite_state_sub_projection sX sub_imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
lX: label X
HlX: composite_label_sub_projection_option lX = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: input_valid_transition X lX (sX, om) (s'X, om')
i: index
Hi: sub_index_prop icomposite_state_sub_projection s'X (dexist i Hi) = composite_state_sub_projection sX (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
lX: label X
HlX: composite_label_sub_projection_option lX = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: input_valid_transition X lX (sX, om) (s'X, om')
i: index
Hi: sub_index_prop is'X (`(dexist i Hi)) = sX (`(dexist i Hi))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
lX: label X
HlX: composite_label_sub_projection_option lX = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: input_valid_transition X lX (sX, om) (s'X, om')
i: index
Hi: sub_index_prop is'X i = sX imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
x: index
v: label (IM x)
HlX: composite_label_sub_projection_option (existT x v) = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: input_valid_transition X (existT x v) (sX, om) ( s'X, om')
i: index
Hi: sub_index_prop is'X i = sX imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
x: index
v: label (IM x)
HlX: composite_label_sub_projection_option (existT x v) = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: transition (existT x v) (sX, om) = (s'X, om')
i: index
Hi: sub_index_prop is'X i = sX imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
x: index
v: label (IM x)
HlX: composite_label_sub_projection_option (existT x v) = None
sX: state X
om: option message
s'X: state X
om': option message
HtX: (let (si', om') := transition v (sX x, om) in (state_update IM sX x si', om')) = ( s'X, om')
i: index
Hi: sub_index_prop is'X i = sX imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
x: index
v: label (IM x)
HlX: composite_label_sub_projection_option (existT x v) = None
sX: state X
om: option message
s'X: state X
om': option message
si': state (IM x)
_om': option message
HtX: (state_update IM sX x si', _om') = (s'X, om')
i: index
Hi: sub_index_prop is'X i = sX imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
x: index
v: label (IM x)
HlX: composite_label_sub_projection_option (existT x v) = None
sX: state X
om: option message
s'X: state X
om': option message
si': state (IM x)
_om': option message
i: index
Hi: sub_index_prop istate_update IM sX x si' i = sX imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
x: index
v: label (IM x)
HlX: composite_label_sub_projection_option (existT x v) = None
sX: state X
om: option message
s'X: state X
om': option message
si': state (IM x)
_om': option message
Hi: sub_index_prop xFalseby case_decide. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
x: index
v: label (IM x)
HlX: match decide (x ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (existT x v) i_in) | right _ => None end = None
sX: state X
om: option message
s'X: state X
om': option message
si': state (IM x)
_om': option message
Hi: sub_index_prop xFalsemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)composite_label_sub_projection_option (lift_sub_label (existT sub_i li)) = Some (existT sub_i li)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))composite_label_sub_projection_option (lift_sub_label (existT (dexist i Hi) li)) = Some (existT (dexist i Hi) li)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))match decide (i ∈ sub_index_list) with | left i_in => Some (existT (dexist i i_in) li) | right _ => None end = Some (existT (dexist i Hi) li)by apply (@dec_sig_sigT_eq _ _ sub_index_prop_dec (fun i => label (IM i))). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
H0: i ∈ sub_index_listexistT (dexist i H0) li = existT (dexist i Hi) limessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_state_lift_prop composite_state_sub_projection lift_sub_stateby intro; apply composite_state_sub_projection_lift_to. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_state_lift_prop composite_state_sub_projection lift_sub_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
tr: list (composite_transition_item sub_IM)pre_VLSM_projection_finite_trace_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection (pre_VLSM_embedding_finite_trace_project (composite_type sub_IM) (composite_type IM) lift_sub_label lift_sub_state tr) = trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
tr: list (composite_transition_item sub_IM)pre_VLSM_projection_finite_trace_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection (pre_VLSM_embedding_finite_trace_project (composite_type sub_IM) (composite_type IM) lift_sub_label lift_sub_state tr) = trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
tr: list (composite_transition_item sub_IM)induced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
tr: list (composite_transition_item sub_IM)induced_validator_state_lift_prop composite_state_sub_projection lift_sub_stateby apply composite_label_sub_projection_option_lift.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
tr: list (composite_transition_item sub_IM)induced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelby apply composite_state_sub_projection_lift. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
tr: list (composite_transition_item sub_IM)induced_validator_state_lift_prop composite_state_sub_projection lift_sub_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_transition_consistency_Some X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_transition_consistency_Some X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
lX1, lX2: label X
lY: label (composite_type sub_IM)
HlX1_pr: composite_label_sub_projection_option lX1 = Some lY
HlX2_pr: composite_label_sub_projection_option lX2 = Some lY
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition lX1 (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
lX2: label X
lY: label (composite_type sub_IM)
HlX1_pr: composite_label_sub_projection_option (existT i lXi) = Some lY
HlX2_pr: composite_label_sub_projection_option lX2 = Some lY
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
lX2: label X
lY: label (composite_type sub_IM)
HlX1_pr: match decide (projT1 (existT i lXi) ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (existT i lXi) i_in) | right _ => None end = Some lY
HlX2_pr: composite_label_sub_projection_option lX2 = Some lY
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
lX2: label X
lY: label (composite_type sub_IM)
HlX1_pr: match decide (i ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (existT i lXi) i_in) | right _ => None end = Some lY
HlX2_pr: composite_label_sub_projection_option lX2 = Some lY
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
lX2: label X
lY: label (composite_type sub_IM)
Hi: i ∈ sub_index_list
HlX1_pr: Some (composite_label_sub_projection (existT i lXi) Hi) = Some lY
HlX2_pr: composite_label_sub_projection_option lX2 = Some lY
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
lX2: label X
lY: label (composite_type sub_IM)
Hi: i ∈ sub_index_list
HlX1_pr: composite_label_sub_projection (existT i lXi) Hi = lY
HlX2_pr: composite_label_sub_projection_option lX2 = Some lY
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
lX2: label X
Hi: i ∈ sub_index_list
HlX2_pr: composite_label_sub_projection_option lX2 = Some (composite_label_sub_projection (existT i lXi) Hi)
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
HlX2_pr: composite_label_sub_projection_option (existT _i _lXi) = Some (composite_label_sub_projection (existT i lXi) Hi)
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
HlX2_pr: match decide (projT1 (existT _i _lXi) ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (existT _i _lXi) i_in) | right _ => None end = Some (composite_label_sub_projection (existT i lXi) Hi)
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
HlX2_pr: match decide (_i ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (existT _i _lXi) i_in) | right _ => None end = Some (composite_label_sub_projection (existT i lXi) Hi)
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
H_i: _i ∈ sub_index_list
HlX2_pr: Some (composite_label_sub_projection (existT _i _lXi) H_i) = Some (composite_label_sub_projection (existT i lXi) Hi)
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
H_i: _i ∈ sub_index_list
HlX2_pr: composite_label_sub_projection (existT _i _lXi) H_i = composite_label_sub_projection (existT i lXi) Hi
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
H_i: _i ∈ sub_index_list
HlX2_pr: existT (dexist (projT1 (existT _i _lXi)) H_i) (projT2 (existT _i _lXi)) = existT (dexist (projT1 (existT i lXi)) Hi) (projT2 (existT i lXi))
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
H_i: _i ∈ sub_index_list
HlX2_pr: existT (dexist _i H_i) _lXi = existT (dexist i Hi) lXi
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
_i: index
_lXi: label (IM _i)
Hi: i ∈ sub_index_list
H_i: _i ∈ sub_index_list
HlX2_pr: existT (dexist _i H_i) _lXi = existT (dexist i Hi) lXi
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT _i _lXi) (sX2, iom) = (sX2', oom2)
H1: _i = icomposite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi, _lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
HlX2_pr: existT (dexist i H_i) _lXi = existT (dexist i Hi) lXi
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT i _lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT i lXi) (sX2, iom) = (sX2', oom2)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT i lXi) (sX2, iom) = (sX2', oom2)
HsXeq_pri: composite_state_sub_projection sX1 (dexist i Hi) = composite_state_sub_projection sX2 (dexist i Hi)composite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: transition (existT i lXi) (sX1, iom) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: transition (existT i lXi) (sX2, iom) = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: (let (si', om') := transition lXi (sX1 i, iom) in (state_update IM sX1 i si', om')) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: (let (si', om') := transition lXi (sX2 i, iom) in (state_update IM sX2 i si', om')) = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
Ht1: (let (si', om') := transition lXi (sX1 i, iom) in (state_update IM sX1 i si', om')) = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: (let (si', om') := transition lXi (sX1 i, iom) in (state_update IM sX2 i si', om')) = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
si': state (IM i)
om': option message
Ht1: (state_update IM sX1 i si', om') = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: (state_update IM sX2 i si', om') = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection sX1' = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
sX1': state X
oom1: option message
si': state (IM i)
om': option message
Ht1: (state_update IM sX1 i si', om') = (sX1', oom1)
sX2': state X
oom2: option message
Ht2: (state_update IM sX2 i si', om') = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 i
H1: state_update IM sX1 i si' = sX1'
H2: om' = oom1composite_state_sub_projection (state_update IM sX1 i si') = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom, oom1: option message
si': state (IM i)
Ht1: (state_update IM sX1 i si', oom1) = (state_update IM sX1 i si', oom1)
sX2': state X
oom2: option message
Ht2: (state_update IM sX2 i si', oom1) = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection (state_update IM sX1 i si') = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom, oom1: option message
si': state (IM i)
sX2': state X
oom2: option message
Ht2: (state_update IM sX2 i si', oom1) = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection (state_update IM sX1 i si') = composite_state_sub_projection sX2' ∧ oom1 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom, oom1: option message
si': state (IM i)
sX2': state X
oom2: option message
Ht2: (state_update IM sX2 i si', oom1) = (sX2', oom2)
HsXeq_pri: sX1 i = sX2 i
H1: state_update IM sX2 i si' = sX2'
H2: oom1 = oom2composite_state_sub_projection (state_update IM sX1 i si') = composite_state_sub_projection (state_update IM sX2 i si') ∧ oom2 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
si': state (IM i)
oom2: option message
Ht2: (state_update IM sX2 i si', oom2) = (state_update IM sX2 i si', oom2)
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection (state_update IM sX1 i si') = composite_state_sub_projection (state_update IM sX2 i si') ∧ oom2 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection (state_update IM sX1 i si') = composite_state_sub_projection (state_update IM sX2 i si') ∧ oom2 = oom2message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection (state_update IM sX1 i si') = composite_state_sub_projection (state_update IM sX2 i si')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
HsXeq_pr: composite_state_sub_projection sX1 = composite_state_sub_projection sX2
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 i
sub_j: sub_indexcomposite_state_sub_projection (state_update IM sX1 i si') sub_j = composite_state_sub_projection (state_update IM sX2 i si') sub_jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
sub_j: sub_index
HsXeq_pr: composite_state_sub_projection sX1 sub_j = composite_state_sub_projection sX2 sub_j
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection (state_update IM sX1 i si') sub_j = composite_state_sub_projection (state_update IM sX2 i si') sub_jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
sub_j: sub_index
HsXeq_pr: composite_state_sub_projection sX1 sub_j = composite_state_sub_projection sX2 sub_j
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 i
j: index
Hj: sub_index_prop j
Heqsub_j: sub_j = dexist j Hjcomposite_state_sub_projection (state_update IM sX1 i si') sub_j = composite_state_sub_projection (state_update IM sX2 i si') sub_jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
j: index
Hj: sub_index_prop j
HsXeq_pr: composite_state_sub_projection sX1 (dexist j Hj) = composite_state_sub_projection sX2 (dexist j Hj)
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 icomposite_state_sub_projection (state_update IM sX1 i si') (dexist j Hj) = composite_state_sub_projection (state_update IM sX2 i si') (dexist j Hj)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
j: index
Hj: sub_index_prop j
HsXeq_pr: sX1 (`(dexist j Hj)) = sX2 (`(dexist j Hj))
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 istate_update IM sX1 i si' (`(dexist j Hj)) = state_update IM sX2 i si' (`(dexist j Hj))by destruct (decide (i = j)); subst; state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
lXi: label (IM i)
Hi, H_i: i ∈ sub_index_list
sX1, sX2: state X
j: index
Hj: sub_index_prop j
HsXeq_pr: sX1 j = sX2 j
iom: option message
si': state (IM i)
oom2: option message
HsXeq_pri: sX1 i = sX2 istate_update IM sX1 i si' j = state_update IM sX2 i si' j
The pre_induced_sub_projection is actually a VLSM_projection of the
original composition.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageVLSM_projection X pre_induced_sub_projection composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageVLSM_projection X pre_induced_sub_projection composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_state_lift_prop composite_state_sub_projection lift_sub_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_transition_consistency_Some X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageweak_projection_transition_consistency_None X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionby apply composite_label_sub_projection_option_lift.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelby apply composite_state_sub_projection_lift.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_state_lift_prop composite_state_sub_projection lift_sub_stateby apply induced_sub_projection_transition_consistency_Some.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageinduced_validator_transition_consistency_Some X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionby apply induced_sub_projection_transition_consistency_None. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM messageweak_projection_transition_consistency_None X (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
l: label pre_induced_sub_projection
s: state pre_induced_sub_projection
om: option message
Hv: valid l (s, om)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
l: label pre_induced_sub_projection
s: state pre_induced_sub_projection
om: option message
Hv: valid l (s, om)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
Hv: valid (existT sub_i li) (s, om)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
lX: label X
sX: state X
HlX: composite_label_sub_projection_option lX = Some (existT sub_i li)
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid lX (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
i: index
_li: label (IM i)
sX: state X
HlX: composite_label_sub_projection_option (existT i _li) = Some (existT sub_i li)
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
i: index
_li: label (IM i)
sX: state X
HlX: match decide (projT1 (existT i _li) ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (existT i _li) i_in) | right _ => None end = Some (existT sub_i li)
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
i: index
_li: label (IM i)
sX: state X
HlX: match decide (i ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (existT i _li) i_in) | right _ => None end = Some (existT sub_i li)
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
i: index
_li: label (IM i)
sX: state X
H0: i ∈ sub_index_list
HlX: Some (composite_label_sub_projection (existT i _li) H0) = Some (existT sub_i li)
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
i: index
_li: label (IM i)
sX: state X
H0: i ∈ sub_index_list
HlX: Some (existT (dexist (projT1 (existT i _li)) H0) (projT2 (existT i _li))) = Some (existT sub_i li)
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
i: index
_li: label (IM i)
sX: state X
H0: i ∈ sub_index_list
HlX: Some (existT (dexist i H0) _li) = Some (existT sub_i li)
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option message
i: index
_li: label (IM i)
sX: state X
H0: i ∈ sub_index_list
HlX: existT (dexist i H0) _li = existT sub_i li
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
H0: i ∈ sub_index_list
li: label (sub_IM (dexist i H0))
s: state pre_induced_sub_projection
om: option message
_li: label (IM i)
sX: state X
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ i : index, i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
H0: i ∈ sub_index_list
li: label (sub_IM (dexist i H0))
s: state pre_induced_sub_projection
om: option message
_li: label (IM i)
sX: state X
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)i ∈ sub_index_list ∧ (∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
H0: i ∈ sub_index_list
li: label (sub_IM (dexist i H0))
s: state pre_induced_sub_projection
om: option message
_li: label (IM i)
sX: state X
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)∃ (l : label (preloaded_with_all_messages_vlsm (IM i))) (s : state (preloaded_with_all_messages_vlsm (IM i))), input_constrained (IM i) l (s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
H0: i ∈ sub_index_list
li: label (sub_IM (dexist i H0))
s: state pre_induced_sub_projection
om: option message
_li: label (IM i)
sX: state X
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)input_constrained (IM i) _li (sX i, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
H0: i ∈ sub_index_list
li: label (sub_IM (dexist i H0))
s: state pre_induced_sub_projection
om: option message
_li: label (IM i)
sX: state X
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)valid_state_prop (preloaded_with_all_messages_vlsm (IM i)) (sX i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
H0: i ∈ sub_index_list
li: label (sub_IM (dexist i H0))
s: state pre_induced_sub_projection
om: option message
_li: label (IM i)
sX: state X
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)valid_state_prop (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) sXby apply constrained_preloaded_incl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
H0: i ∈ sub_index_list
li: label (sub_IM (dexist i H0))
s: state pre_induced_sub_projection
om: option message
_li: label (IM i)
sX: state X
Heqs: composite_state_sub_projection sX = (s, om).1
HsX: valid_state_prop X sX
Hom: option_valid_message_prop X (s, om).2
Hv: valid (existT i _li) (sX, (s, om).2)VLSM_incl_part (constrained_vlsm_machine (free_composite_vlsm IM) constraint) (preloaded_vlsm_machine (free_composite_vlsm IM) (λ _ : message, True))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
l: label pre_induced_sub_projection
s: state pre_induced_sub_projection
om: option messagetransition l (s, om) = composite_transition sub_IM l (s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
l: label pre_induced_sub_projection
s: state pre_induced_sub_projection
om: option messagetransition l (s, om) = composite_transition sub_IM l (s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
sub_i: sub_index
li: label (sub_IM sub_i)
s: state pre_induced_sub_projection
om: option messagetransition (existT sub_i li) (s, om) = composite_transition sub_IM (existT sub_i li) (s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: state pre_induced_sub_projection
om: option messagetransition (existT (dexist i Hi) li) (s, om) = composite_transition sub_IM (existT (dexist i Hi) li) (s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: state pre_induced_sub_projection
om: option message
si': state (IM i)
om': option message(composite_state_sub_projection (state_update IM (lift_sub_state_to (λ n : index, `(vs0 (IM n))) s) i si'), om') = (state_update (λ ei : sub_index, IM (`ei)) s (dexist i Hi) si', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: state pre_induced_sub_projection
om: option message
si': state (IM i)
om': option message
sub_k: sub_indexcomposite_state_sub_projection (state_update IM (lift_sub_state_to (λ n : index, `(vs0 (IM n))) s) i si') sub_k = state_update (λ ei : sub_index, IM (`ei)) s (dexist i Hi) si' sub_kmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: state pre_induced_sub_projection
om: option message
si': state (IM i)
om': option message
k: index
Hk: sub_index_prop kcomposite_state_sub_projection (state_update IM (lift_sub_state_to (λ n : index, `(vs0 (IM n))) s) i si') (dexist k Hk) = state_update (λ ei : sub_index, IM (`ei)) s (dexist i Hi) si' (dexist k Hk)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: state pre_induced_sub_projection
om: option message
si': state (IM i)
om': option message
k: index
Hk: sub_index_prop kstate_update IM (lift_sub_state_to (λ n : index, `(vs0 (IM n))) s) i si' k = state_update (λ ei : sub_index, IM (`ei)) s (dexist i Hi) si' (dexist k Hk)by apply lift_sub_state_to_eq. Qed. End sec_induced_sub_projection. Section sec_induced_sub_projection_subsumption. Context (constraint1 : composite_label IM -> composite_state IM * option message -> Prop) (constraint2 : composite_label IM -> composite_state IM * option message -> Prop) .message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: state pre_induced_sub_projection
om: option message
si': state (IM i)
om': option message
k: index
Hk: sub_index_prop k
n: i ≠ klift_sub_state_to (λ n : index, `(vs0 (IM n))) s k = s (dexist k Hk)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2VLSM_incl (pre_induced_sub_projection constraint1) (pre_induced_sub_projection constraint2)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2VLSM_incl (pre_induced_sub_projection constraint1) (pre_induced_sub_projection constraint2)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_state_lift_prop composite_state_sub_projection lift_sub_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_transition_consistency_Some {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint1 |} (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_transition_consistency_Some {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint2 |} (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2VLSM_incl {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint1 |} {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint2 |}by apply composite_label_sub_projection_option_lift.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_label_lift_prop composite_label_sub_projection_option lift_sub_labelby apply composite_state_sub_projection_lift.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_state_lift_prop composite_state_sub_projection lift_sub_stateby apply induced_sub_projection_transition_consistency_Some.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_transition_consistency_Some {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint1 |} (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionby apply induced_sub_projection_transition_consistency_Some.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2induced_validator_transition_consistency_Some {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint2 |} (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projectionby apply constraint_subsumption_incl. Qed. End sec_induced_sub_projection_subsumption. Definition from_sub_projection : composite_transition_item IM -> Prop := pre_VLSM_projection_in_projection (composite_type IM) _ composite_label_sub_projection_option. Definition finite_trace_sub_projection : list (composite_transition_item IM) -> list (composite_transition_item sub_IM) := pre_VLSM_projection_finite_trace_project (composite_type IM) _ composite_label_sub_projection_option composite_state_sub_projection. Section sec_sub_projection_with_no_equivocation_constraints. Context (constraint : composite_label IM -> composite_state IM * option message -> Prop) `{forall i : index, (HasBeenSentCapability (IM i))} (Free := free_composite_vlsm IM) (Sub_Free := free_composite_vlsm sub_IM) (X := composite_vlsm IM constraint) . Program Definition sub_index_list_annotate : list sub_index := list_annotate (l := sub_index_list) _.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint1, constraint2: composite_label IM → composite_state IM * option message → Prop
Hsubsumption: input_valid_constraint_subsumption (free_composite_vlsm IM) constraint1 constraint2VLSM_incl {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint1 |} {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint2 |}message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM messageForall sub_index_prop sub_index_listby apply Forall_forall. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM messageForall sub_index_prop sub_index_listmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM messagefinite.Finite sub_indexmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM messagefinite.Finite sub_indexmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM messageNoDup (remove_dups sub_index_list_annotate)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message∀ x : sub_index, x ∈ remove_dups sub_index_list_annotateby apply NoDup_remove_dups.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM messageNoDup (remove_dups sub_index_list_annotate)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message∀ x : sub_index, x ∈ remove_dups sub_index_list_annotatemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
sub_x: sub_indexsub_x ∈ remove_dups sub_index_list_annotateby destruct_dec_sig sub_x x Hx Heqsub_x; subst. Qed. Definition finite_trace_sub_projection_app (tr1 tr2 : list (composite_transition_item IM)) : finite_trace_sub_projection (tr1 ++ tr2) = finite_trace_sub_projection tr1 ++ finite_trace_sub_projection tr2 := pre_VLSM_projection_finite_trace_project_app (composite_type IM) _ composite_label_sub_projection_option composite_state_sub_projection tr1 tr2.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
sub_x: sub_index`sub_x ∈ sub_index_listmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
start: composite_state IM
transitions: list (composite_transition_item IM)
Htr: finite_valid_trace_from X start transitions
lstx:= finite_trace_last start transitions: state (composite_type IM)
lstj:= finite_trace_last (composite_state_sub_projection start) (finite_trace_sub_projection transitions): state (composite_type sub_IM)lstj = composite_state_sub_projection lstxby apply (VLSM_projection_finite_trace_last (induced_sub_projection_is_projection constraint)) in Htr. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
start: composite_state IM
transitions: list (composite_transition_item IM)
Htr: finite_valid_trace_from X start transitions
lstx:= finite_trace_last start transitions: state (composite_type IM)
lstj:= finite_trace_last (composite_state_sub_projection start) (finite_trace_sub_projection transitions): state (composite_type sub_IM)lstj = composite_state_sub_projection lstxmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
l: composite_label IM
s: composite_state IM
om: option message
s': composite_state IM
om': option message
Ht: composite_transition IM l (s, om) = (s', om')
Hsub: sub_index_prop (projT1 l)composite_transition sub_IM (existT (dexist (projT1 l) Hsub) (projT2 l)) (composite_state_sub_projection s, om) = (composite_state_sub_projection s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
l: composite_label IM
s: composite_state IM
om: option message
s': composite_state IM
om': option message
Ht: composite_transition IM l (s, om) = (s', om')
Hsub: sub_index_prop (projT1 l)composite_transition sub_IM (existT (dexist (projT1 l) Hsub) (projT2 l)) (composite_state_sub_projection s, om) = (composite_state_sub_projection s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
l: composite_label IM
s: composite_state IM
om: option message
s': composite_state IM
om': option message
Ht: composite_transition IM l (s, om) = (s', om')
Hsub: sub_index_prop (projT1 l)(let (si', om') := transition (projT2 l) (composite_state_sub_projection s (dexist (projT1 l) Hsub), om) in (state_update sub_IM (composite_state_sub_projection s) (dexist (projT1 l) Hsub) si', om')) = (composite_state_sub_projection s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
l: composite_label IM
s: composite_state IM
om: option message
s': composite_state IM
om': option message
Ht: (let (i, li) := l in let (si', om') := transition li (s i, om) in (state_update IM s i si', om')) = ( s', om')
Hsub: sub_index_prop (projT1 l)(let (si', om') := transition (projT2 l) (composite_state_sub_projection s (dexist (projT1 l) Hsub), om) in (state_update sub_IM (composite_state_sub_projection s) (dexist (projT1 l) Hsub) si', om')) = (composite_state_sub_projection s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om: option message
s': composite_state IM
om': option message
Ht: (let (si', om') := transition li (s i, om) in (state_update IM s i si', om')) = ( s', om')
Hsub: sub_index_prop (projT1 (existT i li))(let (si', om') := transition (projT2 (existT i li)) (composite_state_sub_projection s (dexist (projT1 (existT i li)) Hsub), om) in (state_update sub_IM (composite_state_sub_projection s) (dexist (projT1 (existT i li)) Hsub) si', om')) = (composite_state_sub_projection s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om: option message
s': composite_state IM
om': option message
Ht: (let (si', om') := transition li (s i, om) in (state_update IM s i si', om')) = ( s', om')
Hsub: sub_index_prop (projT1 (existT i li))(let (si', om') := transition li (s i, om) in (state_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si', om')) = (composite_state_sub_projection s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om: option message
s': composite_state IM
om': option message
si': state (IM i)
omi': option message
Hti: transition li (s i, om) = (si', omi')
Ht: (state_update IM s i si', omi') = (s', om')
Hsub: sub_index_prop (projT1 (existT i li))(let (si', om') := transition li (s i, om) in (state_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si', om')) = (composite_state_sub_projection s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om: option message
s': composite_state IM
om': option message
si': state (IM i)
omi': option message
Hti: transition li (s i, om) = (si', omi')
Ht: (state_update IM s i si', omi') = (s', om')
Hsub: sub_index_prop (projT1 (existT i li))
H2: state_update IM s i si' = s'
H3: omi' = om'(let (si', om') := transition li (s i, om) in (state_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si', om')) = (composite_state_sub_projection (state_update IM s i si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om, om': option message
si': state (IM i)
Ht: (state_update IM s i si', om') = (state_update IM s i si', om')
Hti: transition li (s i, om) = (si', om')
Hsub: sub_index_prop (projT1 (existT i li))(let (si', om') := transition li (s i, om) in (state_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si', om')) = (composite_state_sub_projection (state_update IM s i si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om, om': option message
si': state (IM i)
Hti: transition li (s i, om) = (si', om')
Hsub: sub_index_prop (projT1 (existT i li))(let (si', om') := transition li (s i, om) in (state_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si', om')) = (composite_state_sub_projection (state_update IM s i si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om, om': option message
si': state (IM i)
Hti: transition li (s i, om) = (si', om')
Hsub: sub_index_prop (projT1 (existT i li))(state_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si', om') = (composite_state_sub_projection (state_update IM s i si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om, om': option message
si': state (IM i)
Hti: transition li (s i, om) = (si', om')
Hsub: sub_index_prop (projT1 (existT i li))state_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si' = composite_state_sub_projection (state_update IM s i si')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om, om': option message
si': state (IM i)
Hti: transition li (s i, om) = (si', om')
Hsub: sub_index_prop (projT1 (existT i li))
sub_j: sub_indexstate_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si' sub_j = composite_state_sub_projection (state_update IM s i si') sub_jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om, om': option message
si': state (IM i)
Hti: transition li (s i, om) = (si', om')
Hsub: sub_index_prop (projT1 (existT i li))
sub_j: sub_index
j: index
Hj: sub_index_prop j
Heqj: sub_j = dexist j Hjstate_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si' sub_j = composite_state_sub_projection (state_update IM s i si') sub_jby destruct (decide (i = j)); subst; state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
i: index
li: label (IM i)
s: composite_state IM
om, om': option message
si': state (IM i)
Hti: transition li (s i, om) = (si', om')
Hsub: sub_index_prop (projT1 (existT i li))
sub_j: sub_index
j: index
Hj: sub_index_prop j
Heqj: sub_j = dexist j Hjstate_update sub_IM (composite_state_sub_projection s) (dexist i Hsub) si' sub_j = state_update IM s i si' (`sub_j)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
l: composite_label IM
s: composite_state IM
om: option message
Hv: composite_valid IM l (s, om)
Hsub: sub_index_prop (projT1 l)composite_valid sub_IM (existT (dexist (projT1 l) Hsub) (projT2 l)) (composite_state_sub_projection s, om)by destruct l. Qed. Context (seed : message -> Prop) (sub_constraint : composite_label sub_IM -> composite_state sub_IM * option message -> Prop) (Xj := composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed) .message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
l: composite_label IM
s: composite_state IM
om: option message
Hv: composite_valid IM l (s, om)
Hsub: sub_index_prop (projT1 l)composite_valid sub_IM (existT (dexist (projT1 l) Hsub) (projT2 l)) (composite_state_sub_projection s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM messageVLSM_incl Xj (preloaded_with_all_messages_vlsm Sub_Free)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM messageVLSM_incl Xj (preloaded_with_all_messages_vlsm Sub_Free)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM messageVLSM_incl {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_vlsm_machine (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)) seed |} {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)) |}message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM messageVLSM_incl {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)) |} {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_vlsm_machine Sub_Free (λ _ : message, True) |}by cbn; apply (preloaded_vlsm_incl (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed))).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM messageVLSM_incl {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_vlsm_machine (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)) seed |} {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)) |}by cbn; apply (preloaded_constraint_subsumption_incl_free (free_composite_vlsm _)). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM messageVLSM_incl {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)) |} {| vlsm_type := preloaded_with_all_messages_vlsm (composite_vlsm sub_IM (no_equivocations_additional_constraint_with_preloaded sub_IM (free_constraint sub_IM) seed)); vlsm_machine := preloaded_vlsm_machine Sub_Free (λ _ : message, True) |}
Property of a composite trace requiring that every message received in an
transition involving a machine in the chosen subset must either belong to
the set specified by seed, or it must have_been_sent by some machine
in the chosen subset (prior to it being received).
Definition trace_sub_item_input_is_seeded_or_sub_previously_sent (tr : list (composite_transition_item IM)) : Prop := forall pre item suf m, tr = pre ++ [item] ++ suf -> input item = Some m -> from_sub_projection item -> seed m \/ exists pre_item, pre_item ∈ pre /\ output pre_item = Some m /\ from_sub_projection pre_item. Definition state_sub_item_input_is_seeded_or_sub_previously_sent (s : composite_state IM) : Prop := forall is tr, finite_constrained_trace_init_to (free_composite_vlsm IM) is s tr -> trace_sub_item_input_is_seeded_or_sub_previously_sent tr.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
Htr: finite_valid_trace X s trfinite_valid_trace Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
Htr: finite_valid_trace X s trfinite_valid_trace Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
Htr: finite_valid_trace_from X s tr
His: initial_state_prop sfinite_valid_trace Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
Htr: finite_valid_trace_from X s tr
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)finite_valid_trace Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
Htr: finite_valid_trace_from X s tr
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
Htr: finite_valid_trace_from X s tr
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s (tr ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent tr → finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (tr ++ [x]))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr ∧ finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent tr → finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (tr ++ [x]))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent tr → finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (tr ++ [x]))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent tr → finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)trace_sub_item_input_is_seeded_or_sub_previously_sent trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (tr ++ [x]))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent tr → finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)trace_sub_item_input_is_seeded_or_sub_previously_sent trmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent tr → finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
pre: list (composite_transition_item IM)
item: composite_transition_item IM
suf: list (composite_transition_item IM)
m: message
Heq: tr = pre ++ [item] ++ suf
Hin_m: input item = Some m
Hitem: from_sub_projection itemseed m ∨ (∃ pre_item : transition_item, pre_item ∈ pre ∧ output pre_item = Some m ∧ from_sub_projection pre_item)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
pre: list (composite_transition_item IM)
item: composite_transition_item IM
suf: list (composite_transition_item IM)
Hx: finite_valid_trace_from X (finite_trace_last s (pre ++ [item] ++ suf)) [x]
Htr: finite_valid_trace_from X s (pre ++ [item] ++ suf)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent ((pre ++ [item] ++ suf) ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ [item] ++ suf) → finite_valid_trace_from X s (pre ++ [item] ++ suf) → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (pre ++ [item] ++ suf))
m: message
Hin_m: input item = Some m
Hitem: from_sub_projection itemseed m ∨ (∃ pre_item : transition_item, pre_item ∈ pre ∧ output pre_item = Some m ∧ from_sub_projection pre_item)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
pre: list (composite_transition_item IM)
item: composite_transition_item IM
suf: list (composite_transition_item IM)
Hx: finite_valid_trace_from X (finite_trace_last s (pre ++ [item] ++ suf)) [x]
Htr: finite_valid_trace_from X s (pre ++ [item] ++ suf)
m: message
Hmsg: (pre ++ [item] ++ suf) ++ [x] = pre ++ [item] ++ suf ++ [x] → input item = Some m → from_sub_projection item → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ pre ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ [item] ++ suf) → finite_valid_trace_from X s (pre ++ [item] ++ suf) → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (pre ++ [item] ++ suf))
Hin_m: input item = Some m
Hitem: from_sub_projection itemseed m ∨ (∃ pre_item : transition_item, pre_item ∈ pre ∧ output pre_item = Some m ∧ from_sub_projection pre_item)by destruct (Hmsg eq_refl Hin_m Hitem); [left | right].message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
pre: list (composite_transition_item IM)
item: composite_transition_item IM
suf: list (composite_transition_item IM)
Hx: finite_valid_trace_from X (finite_trace_last s (pre ++ [item] ++ suf)) [x]
Htr: finite_valid_trace_from X s (pre ++ [item] ++ suf)
m: message
Hmsg: ((pre ++ [item]) ++ suf) ++ [x] = ((pre ++ [item]) ++ suf) ++ [x] → input item = Some m → from_sub_projection item → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ pre ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ [item] ++ suf) → finite_valid_trace_from X s (pre ++ [item] ++ suf) → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (pre ++ [item] ++ suf))
Hin_m: input item = Some m
Hitem: from_sub_projection itemseed m ∨ (∃ pre_item : transition_item, pre_item ∈ pre ∧ output pre_item = Some m ∧ from_sub_projection pre_item)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from X s tr → finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (tr ++ [x]))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection (tr ++ [x]))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr ++ finite_trace_sub_projection [x])message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr) ∧ finite_valid_trace_from Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)) (finite_trace_sub_projection [x])message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)) (finite_trace_sub_projection [x])message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)finite_valid_trace_from Xj lst (finite_trace_sub_projection [x])message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)valid_state_prop Xj lstmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lstfinite_valid_trace_from Xj lst (finite_trace_sub_projection [x])by apply finite_valid_trace_last_pstate in IHtr; subst.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)valid_state_prop Xj lstmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lstfinite_valid_trace_from Xj lst (finite_trace_sub_projection [x])message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lstfinite_valid_trace_from Xj lst match pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection x with | Some y => [y] | None => [] endmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lstfinite_valid_trace_from Xj lst match match match decide (projT1 (l x) ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (l x) i_in) | right _ => None end with | Some lY => Some {| l := lY; input := input x; destination := composite_state_sub_projection (destination x); output := output x |} | None => None end with | Some y => [y] | None => [] endmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 (l x) ∈ sub_index_listfinite_valid_trace_from Xj lst [{| l := composite_label_sub_projection (l x) Hlx; input := input x; destination := composite_state_sub_projection (destination x); output := output x |}]message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
x: composite_transition_item IM
tr: list (composite_transition_item IM)
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [x]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state Xj
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 (l x) ∈ sub_index_listinput_valid_transition Xj (composite_label_sub_projection (l x) Hlx) (lst, input x) (composite_state_sub_projection (destination x), output x)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: state X
iom, oom: option message
l: label X
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 (VLSM.l {| l := l; input := iom; destination := s0; output := oom |}) ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Ht: input_valid_transition X l (finite_trace_last s tr, iom) ( s0, oom)input_valid_transition Xj (composite_label_sub_projection (VLSM.l {| l := l; input := iom; destination := s0; output := oom |}) Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), input {| l := l; input := iom; destination := s0; output := oom |}) (composite_state_sub_projection (destination {| l := l; input := iom; destination := s0; output := oom |}), output {| l := l; input := iom; destination := s0; output := oom |})message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Ht: input_valid_transition X l (finite_trace_last s tr, iom) ( s0, oom)input_valid_transition Xj (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) (composite_state_sub_projection s0, oom)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: input_valid X l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)input_valid_transition Xj (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) (composite_state_sub_projection s0, oom)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: input_valid X l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (composite_state_sub_projection (finite_trace_last s tr), iom) = (composite_state_sub_projection s0, oom)input_valid_transition Xj (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) (composite_state_sub_projection s0, oom)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, iom)
Hc: constraint l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (composite_state_sub_projection (finite_trace_last s tr), iom) = (composite_state_sub_projection s0, oom)input_valid_transition Xj (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) (composite_state_sub_projection s0, oom)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, iom)
Hc: constraint l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (composite_state_sub_projection (finite_trace_last s tr), iom) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (composite_state_sub_projection (finite_trace_last s tr), iom)input_valid_transition Xj (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) (composite_state_sub_projection s0, oom)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, iom)
Hc: constraint l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)input_valid_transition Xj (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) (composite_state_sub_projection s0, oom)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, iom)
Hc: constraint l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)option_valid_message_prop Xj iommessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, iom)
Hc: constraint l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)composite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, iom)
Hc: constraint l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)option_valid_message_prop Xj iommessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := Some m; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, Some m)
Hc: constraint l (finite_trace_last s tr, Some m)
Ht: transition l (finite_trace_last s tr, Some m) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)option_valid_message_prop Xj (Some m)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := Some m; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, Some m)
Hc: constraint l (finite_trace_last s tr, Some m)
Ht: transition l (finite_trace_last s tr, Some m) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)valid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}])
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_listvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_listvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m : message, tr ++ [x] = tr ++ [x] ++ [] → input x = Some m → from_sub_projection x → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_listvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m : message, tr ++ [x] = tr ++ [x] ++ [] → input x = Some m → from_sub_projection x → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_listfrom_sub_projection xmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m : message, tr ++ [x] = tr ++ [x] ++ [] → input x = Some m → from_sub_projection x → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m : message, tr ++ [x] = tr ++ [x] ++ [] → input x = Some m → from_sub_projection x → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_listfrom_sub_projection xby subst; case_decide.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m : message, tr ++ [x] = tr ++ [x] ++ [] → input x = Some m → from_sub_projection x → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_listis_Some match decide (projT1 (VLSM.l x) ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (VLSM.l x) i_in) | right _ => None endmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m : message, tr ++ [x] = tr ++ [x] ++ [] → input x = Some m → from_sub_projection x → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m0 : message, tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}] = tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}] ++ [] → input {| l := l; input := Some m; destination := s0; output := oom |} = Some m0 → from_sub_projection {| l := l; input := Some m; destination := s0; output := oom |} → seed m0 ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m0 ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: from_sub_projection {| l := l; input := Some m; destination := s0; output := oom |} → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
Hmsg: seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)valid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection itemvalid_message_prop Xj mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection itemtrace_has_message (field_selector output) m (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item∃ x : transition_item, x ∈ finite_trace_sub_projection tr ∧ field_selector output m xmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
HitemX: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some itemX∃ x : transition_item, x ∈ finite_trace_sub_projection tr ∧ field_selector output m xmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
HitemX: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some itemXitemX ∈ finite_trace_sub_projection tr ∧ field_selector output m itemXmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
HitemX: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some itemXitemX ∈ finite_trace_sub_projection trmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
HitemX: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some itemXfield_selector output m itemXby apply elem_of_list_omap; exists item.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
HitemX: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some itemXitemX ∈ finite_trace_sub_projection trmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
HitemX: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some itemXfield_selector output m itemXmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
HitemX: match composite_label_sub_projection_option (VLSM.l item) with | Some lY => Some {| l := lY; input := input item; destination := composite_state_sub_projection (destination item); output := output item |} | None => None end = Some itemXfield_selector output m itemXby inversion HitemX.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
itemX: transition_item
c: composite_label sub_IM
HitemX: Some {| l := c; input := input item; destination := composite_state_sub_projection (destination item); output := output item |} = Some itemXfield_selector output m itemXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
Htr: finite_valid_trace_from X s tr
Hx: finite_valid_trace_from X (finite_trace_last s tr) [{| l := l; input := iom; destination := s0; output := oom |}]
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
Hisp: valid_state_prop Xj (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Htl: finite_valid_trace_from X s0 []
Hv: valid l (finite_trace_last s tr, iom)
Hc: constraint l (finite_trace_last s tr, iom)
Ht: transition l (finite_trace_last s tr, iom) = (s0, oom)
Htj: composite_transition sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom) = (composite_state_sub_projection s0, oom)
Hvj: composite_valid sub_IM (existT (dexist (projT1 l) Hlx) (projT2 l)) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)composite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
iom, oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := iom; destination := s0; output := oom |}])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_listcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), iom)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_listcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_listcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_listcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_listfrom_sub_projection xmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_listfrom_sub_projection xby subst; case_decide.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_listis_Some match decide (projT1 (VLSM.l x) ∈ sub_index_list) with | left i_in => Some (composite_label_sub_projection (VLSM.l x) i_in) | right _ => None endmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: trace_sub_item_input_is_seeded_or_sub_previously_sent (tr ++ [x])
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m : message, tr ++ [x] = tr ++ [x] ++ [] → input x = Some m → from_sub_projection x → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: ∀ m0 : message, tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}] = tr ++ [{| l := l; input := Some m; destination := s0; output := oom |}] ++ [] → input {| l := l; input := Some m; destination := s0; output := oom |} = Some m0 → from_sub_projection {| l := l; input := Some m; destination := s0; output := oom |} → seed m0 ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m0 ∧ from_sub_projection pre_item)
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
Hmsg: from_sub_projection {| l := l; input := Some m; destination := s0; output := oom |} → seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection xcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
Hmsg: seed m ∨ (∃ pre_item : transition_item, pre_item ∈ tr ∧ output pre_item = Some m ∧ from_sub_projection pre_item)composite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection itemcomposite_no_equivocations_except_from sub_IM seed (composite_label_sub_projection l Hlx) (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr))
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection itemcomposite_has_been_sent sub_IM (finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr), Some m).1 mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection itemcomposite_has_been_sent sub_IM (lst, Some m).1 mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lstcomposite_has_been_sent sub_IM (lst, Some m).1 mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lstselected_message_exists_in_all_preloaded_traces (free_composite_vlsm sub_IM) (field_selector output) (lst, Some m).1 mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lstselected_message_exists_in_some_preloaded_traces (free_composite_vlsm sub_IM) (field_selector output) (lst, Some m).1 mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst∃ _ : finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm sub_IM)) (composite_state_sub_projection s) (lst, Some m).1 (finite_trace_sub_projection tr), trace_has_message (field_selector output) m (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lstfinite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm sub_IM)) (composite_state_sub_projection s) (lst, Some m).1 (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lsttrace_has_message (field_selector output) m (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lstfinite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm sub_IM)) (composite_state_sub_projection s) (lst, Some m).1 (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lstfinite_valid_trace_from_to (preloaded_with_all_messages_vlsm (free_composite_vlsm sub_IM)) (composite_state_sub_projection s) (lst, Some m).1 (finite_trace_sub_projection tr)by apply valid_trace_add_last; auto.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lstfinite_valid_trace_from_to {| vlsm_type := Xj; vlsm_machine := Xj |} (composite_state_sub_projection s) (lst, Some m).1 (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lsttrace_has_message (field_selector output) m (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst∃ x : transition_item, x ∈ finite_trace_sub_projection tr ∧ field_selector output m xmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
Hsome: is_Some (pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item)∃ x : transition_item, x ∈ finite_trace_sub_projection tr ∧ field_selector output m xmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
Hsome: is_Some (pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item)is_Some_proj Hsome ∈ finite_trace_sub_projection tr ∧ field_selector output m (is_Some_proj Hsome)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
t: transition_item
Hproj: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some t
Hsome: is_Some (Some t)is_Some_proj Hsome ∈ finite_trace_sub_projection tr ∧ field_selector output m (is_Some_proj Hsome)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
t: transition_item
Hproj: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some t
Hsome: is_Some (Some t)t ∈ finite_trace_sub_projection tr ∧ output t = Some mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
t: transition_item
Hproj: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some t
Hsome: is_Some (Some t)t ∈ finite_trace_sub_projection trmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
t: transition_item
Hproj: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some t
Hsome: is_Some (Some t)output t = Some mby apply elem_of_list_omap; exists item.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
t: transition_item
Hproj: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some t
Hsome: is_Some (Some t)t ∈ finite_trace_sub_projection trmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
t: transition_item
Hproj: pre_VLSM_projection_transition_item_project (composite_type IM) (composite_type sub_IM) composite_label_sub_projection_option composite_state_sub_projection item = Some t
Hsome: is_Some (Some t)output t = Some mby destruct (composite_label_sub_projection_option _); [inversion Hproj | congruence]. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
sub_index_list: list index
H0: ∀ i : index, HasBeenSentCapability (IM i)
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
seed: message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
s0: composite_state IM
m: message
oom: option message
l: composite_label IM
x: transition_item
Heqx: x = {| l := l; input := Some m; destination := s0; output := oom |}
His: composite_initial_state_prop sub_IM (composite_state_sub_projection s)
IHtr: finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)
lst: state (composite_type sub_IM)
Heqlst: lst = finite_trace_last (composite_state_sub_projection s) (finite_trace_sub_projection tr)
Hlst: valid_state_prop Xj lst
Hlx: projT1 l ∈ sub_index_list
Hx: from_sub_projection x
item: transition_item
Hitem: item ∈ tr
Hout: output item = Some m
Hsub_item: from_sub_projection item
Hlst_pre: constrained_state_prop Sub_Free lst
t: transition_item
Hproj: match composite_label_sub_projection_option (VLSM.l item) with | Some lY => Some {| l := lY; input := input item; destination := composite_state_sub_projection (destination item); output := output item |} | None => None end = Some t
Hsome: is_Some (Some t)output t = Some mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
Hs: state_sub_item_input_is_seeded_or_sub_previously_sent s
Hps: valid_state_prop X svalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
Hs: state_sub_item_input_is_seeded_or_sub_previously_sent s
Hps: valid_state_prop X svalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
Hs: state_sub_item_input_is_seeded_or_sub_previously_sent s
Hps: ∃ (is : state X) (tr : list transition_item), finite_valid_trace_init_to X is s trvalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
Hs: state_sub_item_input_is_seeded_or_sub_previously_sent s
is: state X
tr: list transition_item
Htr: finite_valid_trace_init_to X is s trvalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
tr: list transition_item
Hs: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
is: state X
Htr: finite_valid_trace_init_to X is s trvalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
tr: list transition_item
Hs: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
is: state X
Htr: finite_valid_trace_init_to X is s tr
Hlst: finite_trace_last is tr = svalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
tr: list transition_item
Hs: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
is: state X
Htr: finite_valid_trace X is tr
Hlst: finite_trace_last is tr = svalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
tr: list transition_item
Hs: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
is: state X
Htr: finite_valid_trace X is tr
Hlst: finite_trace_last is tr = s
Hlst': let lstx := finite_trace_last is tr in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection tr) in lstj = composite_state_sub_projection lstxvalid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
tr: list transition_item
Hs: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
is: state X
Htr: finite_valid_trace X is tr
Hlst: finite_trace_last is tr = s
Hlst': let lstx := finite_trace_last is tr in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection tr) in lstj = composite_state_sub_projection lstx
Hptr: finite_valid_trace Xj (composite_state_sub_projection is) (finite_trace_sub_projection tr)valid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
tr: list transition_item
Hs: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
is: state X
Htr: finite_valid_trace X is tr
Hlst: finite_trace_last is tr = s
Hlst': let lstx := finite_trace_last is tr in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection tr) in lstj = composite_state_sub_projection lstx
Hptr: finite_valid_trace_from Xj (composite_state_sub_projection is) (finite_trace_sub_projection tr)valid_state_prop Xj (composite_state_sub_projection s)by cbn in *; rewrite Hlst' in Hptr; subst. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: state (composite_type IM)
tr: list transition_item
Hs: trace_sub_item_input_is_seeded_or_sub_previously_sent tr
is: state X
Htr: finite_valid_trace X is tr
Hlst: finite_trace_last is tr = s
Hlst': let lstx := finite_trace_last is tr in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection tr) in lstj = composite_state_sub_projection lstx
Hptr: valid_state_prop Xj (finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection tr))valid_state_prop Xj (composite_state_sub_projection s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
Htr: finite_valid_trace_from X s trfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
Htr: finite_valid_trace_from X s trfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
Htr: ∃ (is : state X) (trs : list transition_item), finite_valid_trace X is (trs ++ tr) ∧ finite_trace_last is trs = sfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = sfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is (pre ++ tr)finite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre ∧ finite_valid_trace_from X (finite_trace_last is pre) trfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is prefinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace Xj (composite_state_sub_projection is) (finite_trace_sub_projection (pre ++ tr))
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxtrace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace Xj (composite_state_sub_projection is) (finite_trace_sub_projection (pre ++ tr))
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace_from Xj (composite_state_sub_projection is) (finite_trace_sub_projection (pre ++ tr))
His: initial_state_prop (composite_state_sub_projection is)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace_from Xj (composite_state_sub_projection is) (finite_trace_sub_projection pre ++ finite_trace_sub_projection tr)
His: initial_state_prop (composite_state_sub_projection is)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace_from Xj (composite_state_sub_projection is) (finite_trace_sub_projection pre) ∧ finite_valid_trace_from Xj (finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre)) (finite_trace_sub_projection tr)
His: initial_state_prop (composite_state_sub_projection is)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace_from Xj (finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre)) (finite_trace_sub_projection tr)
His: initial_state_prop (composite_state_sub_projection is)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection s) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
tr: list (composite_transition_item IM)
is: state X
pre: list transition_item
lst:= finite_trace_last (finite_trace_last is pre) tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
Htr: finite_valid_trace_from Xj (finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre)) (finite_trace_sub_projection tr)
His: initial_state_prop (composite_state_sub_projection is)
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_from Xj (composite_state_sub_projection (finite_trace_last is pre)) (finite_trace_sub_projection tr)by rewrite Hpre_lst in Htr.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
tr: list (composite_transition_item IM)
is: composite_state IM
pre: list transition_item
lst:= finite_trace_last (finite_trace_last is pre) tr: composite_state IM
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
Htr: finite_valid_trace_from Xj (finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre)) (finite_trace_sub_projection tr)
His: composite_initial_state_prop sub_IM (composite_state_sub_projection is)
Hpre: finite_valid_trace_from X is pre
Hpre_lst: finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) = composite_state_sub_projection (finite_trace_last is pre)finite_valid_trace_from Xj (composite_state_sub_projection (finite_trace_last is pre)) (finite_trace_sub_projection tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
Hmsg: state_sub_item_input_is_seeded_or_sub_previously_sent lst
is: state X
pre: list transition_item
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxtrace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
is: state X
pre: list transition_item
Hmsg: finite_constrained_trace_init_to (free_composite_vlsm IM) is lst (pre ++ tr) → trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxtrace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
is: state X
pre: list transition_item
Hmsg: finite_constrained_trace_init_to (free_composite_vlsm IM) is lst (pre ++ tr) → trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_constrained_trace_init_to (free_composite_vlsm IM) is lst (pre ++ tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
is: state X
pre: list transition_item
Hmsg: finite_constrained_trace_init_to (free_composite_vlsm IM) is lst (pre ++ tr) → trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_valid_trace_init_to {| vlsm_type := free_composite_vlsm IM; vlsm_machine := constrained_vlsm_machine (free_composite_vlsm IM) constraint |} is lst (pre ++ tr)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
is: state X
pre: list transition_item
Hmsg: finite_constrained_trace_init_to (free_composite_vlsm IM) is lst (pre ++ tr) → trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_trace_last is (pre ++ tr) = lstby unfold lst; subst. Qed. End sec_sub_projection_with_no_equivocation_constraints.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
constraint: composite_label IM → composite_state IM * option message → Prop
H0: ∀ i : index, HasBeenSentCapability (IM i)
Free:= free_composite_vlsm IM: VLSM message
Sub_Free:= free_composite_vlsm sub_IM: VLSM message
X:= composite_vlsm IM constraint: VLSM message
seed: message → Prop
sub_constraint: composite_label sub_IM → composite_state sub_IM * option message → Prop
Xj:= composite_no_equivocation_vlsm_with_preloaded sub_IM (free_constraint sub_IM) seed: VLSM message
s: composite_state IM
tr: list (composite_transition_item IM)
lst:= finite_trace_last s tr: state (composite_type IM)
is: state X
pre: list transition_item
Hmsg: finite_constrained_trace_init_to (free_composite_vlsm IM) is lst (pre ++ tr) → trace_sub_item_input_is_seeded_or_sub_previously_sent (pre ++ tr)
Htr: finite_valid_trace X is (pre ++ tr)
Hs: finite_trace_last is pre = s
Hpre: finite_valid_trace_from X is pre
Hpre_lst: let lstx := finite_trace_last is pre in let lstj := finite_trace_last (composite_state_sub_projection is) (finite_trace_sub_projection pre) in lstj = composite_state_sub_projection lstxfinite_trace_last (finite_trace_last is pre) tr = lstmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM scomposite_initial_state_prop IM (lift_sub_state s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM scomposite_initial_state_prop IM (lift_sub_state s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: indexinitial_state_prop (lift_sub_state s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: indexinitial_state_prop match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) endmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: sub_index_prop iinitial_state_prop (s (dexist i Hi))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: ¬ sub_index_prop iinitial_state_prop (`(vs0 (IM i)))by apply (Hs (dexist i Hi)).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: sub_index_prop iinitial_state_prop (s (dexist i Hi))by destruct (vs0 _). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: ¬ sub_index_prop iinitial_state_prop (`(vs0 (IM i)))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM scomposite_initial_state_prop IM (lift_sub_state_to s0 s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM scomposite_initial_state_prop IM (lift_sub_state_to s0 s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: indexinitial_state_prop (lift_sub_state_to s0 s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: indexinitial_state_prop match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => s0 i endmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: sub_index_prop iinitial_state_prop (s (dexist i Hi))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: ¬ sub_index_prop iinitial_state_prop (s0 i)by apply (Hs (dexist i Hi)).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: sub_index_prop iinitial_state_prop (s (dexist i Hi))by apply Hs0. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
s0: composite_state IM
Hs0: composite_initial_state_prop IM s0
s: composite_state sub_IM
Hs: composite_initial_state_prop sub_IM s
i: index
Hi: ¬ sub_index_prop iinitial_state_prop (s0 i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
m: message
Hm: composite_initial_message_prop sub_IM mcomposite_initial_message_prop IM mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
m: message
Hm: composite_initial_message_prop sub_IM mcomposite_initial_message_prop IM mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
m: message
i: index
Hi: bool_decide (sub_index_prop i)
Hm: ∃ mi : initial_message (sub_IM (i ↾ Hi)), `mi = mcomposite_initial_message_prop IM mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
m: message
i: index
Hi: bool_decide (sub_index_prop i)
Hm: ∃ mi : initial_message (IM (`(i ↾ Hi))), `mi = mcomposite_initial_message_prop IM mby exists i. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
m: message
i: index
Hi: bool_decide (sub_index_prop i)
Hm: ∃ mi : initial_message (IM i), `mi = mcomposite_initial_message_prop IM mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
l: composite_label sub_IM
s: composite_state sub_IM
om: option message
Hv: composite_valid sub_IM l (s, om)composite_valid IM (lift_sub_label l) (lift_sub_state s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
l: composite_label sub_IM
s: composite_state sub_IM
om: option message
Hv: composite_valid sub_IM l (s, om)composite_valid IM (lift_sub_label l) (lift_sub_state s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
l: composite_label sub_IM
s: composite_state sub_IM
om: option messagecomposite_valid sub_IM l (s, om) → composite_valid IM (lift_sub_label l) (lift_sub_state s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
sub_i: sub_index
li: label (sub_IM sub_i)
s: composite_state sub_IM
om: option messagecomposite_valid sub_IM (existT sub_i li) (s, om) → composite_valid IM (lift_sub_label (existT sub_i li)) (lift_sub_state s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
sub_i: sub_index
li: label (sub_IM sub_i)
s: composite_state sub_IM
om: option message
i: index
Hi: sub_index_prop i
Heqsub_i: sub_i = dexist i Hicomposite_valid sub_IM (existT sub_i li) (s, om) → composite_valid IM (lift_sub_label (existT sub_i li)) (lift_sub_state s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: composite_state sub_IM
om: option messagevalid li (s (dexist i Hi), om) → valid li (match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option messagevalid li (s (dexist i Hi), om) → valid li (match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end, om)by rewrite (sub_IM_state_pi s _Hi Hi); auto. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option message
_Hi: sub_index_prop ivalid li (s (dexist i Hi), om) → valid li (s (dexist i _Hi), om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
l: composite_label sub_IM
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
Ht: composite_transition sub_IM l (s, om) = (s', om')composite_transition IM (lift_sub_label l) (lift_sub_state s, om) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
l: composite_label sub_IM
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
Ht: composite_transition sub_IM l (s, om) = (s', om')composite_transition IM (lift_sub_label l) (lift_sub_state s, om) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
l: composite_label sub_IM
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option messagecomposite_transition sub_IM l (s, om) = (s', om') → composite_transition IM (lift_sub_label l) (lift_sub_state s, om) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
sub_i: sub_index
li: label (sub_IM sub_i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option messagecomposite_transition sub_IM (existT sub_i li) (s, om) = (s', om') → composite_transition IM (lift_sub_label (existT sub_i li)) (lift_sub_state s, om) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
sub_i: sub_index
li: label (sub_IM sub_i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
i: index
Hi: sub_index_prop i
Heqsub_i: sub_i = dexist i Hicomposite_transition sub_IM (existT sub_i li) (s, om) = (s', om') → composite_transition IM (lift_sub_label (existT sub_i li)) (lift_sub_state s, om) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (sub_IM (dexist i Hi))
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message(let (si', om') := transition li (s (dexist i Hi), om) in (state_update sub_IM s (dexist i Hi) si', om')) = (s', om') → (let (si', om') := transition li (match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end, om) in (state_update IM (lift_sub_state s) i si', om')) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message(let (si', om') := transition li (s (dexist i Hi), om) in (state_update sub_IM s (dexist i Hi) si', om')) = (s', om') → (let (si', om') := transition li (match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end, om) in (state_update IM (lift_sub_state s) i si', om')) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
_Hi: sub_index_prop i(let (si', om') := transition li (s (dexist i Hi), om) in (state_update sub_IM s (dexist i Hi) si', om')) = (s', om') → (let (si', om') := transition li (s (dexist i _Hi), om) in (state_update IM (lift_sub_state s) i si', om')) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
_Hi: sub_index_prop i(let (si', om') := transition li (s (dexist i Hi), om) in (state_update sub_IM s (dexist i Hi) si', om')) = (s', om') → (let (si', om') := transition li (s (dexist i Hi), om) in (state_update IM (lift_sub_state s) i si', om')) = (lift_sub_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
si': state (sub_IM (dexist i Hi))
_om': option message(state_update IM (lift_sub_state s) i si', om') = (lift_sub_state (state_update sub_IM s (dexist i Hi) si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
si': state (sub_IM (dexist i Hi))
_om': option message
j: indexstate_update IM (lift_sub_state s) i si' j = lift_sub_state (state_update sub_IM s (dexist i Hi) si') jby destruct (decide (i = j)); subst; state_update_simpl; case_decide; state_update_simpl. Qed. End sec_sub_composition. #[export] Hint Rewrite @sub_IM_state_update_eq using done : state_update. #[export] Hint Rewrite @sub_IM_state_update_neq using done : state_update. #[export] Hint Rewrite @lift_sub_state_to_eq using done : state_update. #[export] Hint Rewrite @lift_sub_state_to_neq using done : state_update. #[export] Hint Rewrite @lift_sub_state_to_neq_state_update using done : state_update. Arguments sub_IM_state_pi {_ _ _ _ _ _} _ _ _. (* Make initial arguments of lift_sub_transition not maximally inserted, so tactics like rapply lift_sub_transition do not try to guess those arguments before looking at the goal, and we don't have to always write <<rapply @lift_sub_transition>>. *) Arguments lift_sub_transition [message index]%type_scope {EqDecision0} IM%function_scope sub_index_list%list_scope l s om s' om' Ht.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_index_list: list index
i: index
Hi: sub_index_prop i
li: label (IM i)
s: composite_state sub_IM
om: option message
s': composite_state sub_IM
om': option message
si': state (sub_IM (dexist i Hi))
_om': option message
j: indexstate_update IM (λ i : index, match decide (sub_index_prop i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end) i si' j = match decide (sub_index_prop j) with | left e => state_update sub_IM s (dexist i Hi) si' (dexist j e) | right _ => `(vs0 (IM j)) end
Lifting a trace from a sub-composition to the full composition
equivocators
.
Section sec_lift_sub_state_to_preloaded. Context {message : Type} `{finite.Finite index} (IM : index -> VLSM message) (equivocators : list index) (Free := free_composite_vlsm IM) (PreFree := preloaded_with_all_messages_vlsm Free) (SubFree : VLSM message := free_composite_vlsm (sub_IM IM equivocators)) (PreSubFree := preloaded_with_all_messages_vlsm SubFree) (base_s : composite_state IM) (Hbase_s : constrained_state_prop Free base_s) .
A partial label projection function which only keeps non-equivocating transitions.
Definition remove_equivocating_label_project (l : composite_label IM) : option (composite_label IM)
:= if decide (projT1 l ∈ equivocators) then None else Some l.
Replaces the state components of the given state with those of
eqv_is
.
Definition remove_equivocating_state_project eqv_is : composite_state IM -> composite_state IM := fun s => lift_sub_state_to IM equivocators s eqv_is.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)strong_projection_valid_preservation Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)strong_projection_valid_preservation Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
lX, lY: label Free
Hl: remove_equivocating_label_project lX = Some lY
s: state Free
om: option message
Hv: valid lX (s, om)valid lY (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
Hl: remove_equivocating_label_project (existT i liX) = Some lY
s: state Free
om: option message
Hv: valid (existT i liX) (s, om)valid lY (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
Hl: (if decide (projT1 (existT i liX) ∈ equivocators) then None else Some (existT i liX)) = Some lY
s: state Free
om: option message
Hv: valid (existT i liX) (s, om)valid lY (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
Hl: (if decide (i ∈ equivocators) then None else Some (existT i liX)) = Some lY
s: state Free
om: option message
Hv: valid (existT i liX) (s, om)valid lY (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
n: i ∉ equivocators
Hl: Some (existT i liX) = Some lY
s: state Free
om: option message
Hv: valid (existT i liX) (s, om)valid lY (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
n: i ∉ equivocators
Hl: Some (existT i liX) = Some lY
s: state Free
om: option message
Hv: valid (existT i liX) (s, om)
H1: existT i liX = lYvalid (existT i liX) (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
Hl: Some (existT i liX) = Some (existT i liX)
s: state Free
om: option message
Hv: valid (existT i liX) (s, om)valid (existT i liX) (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
Hv: valid (existT i liX) (s, om)valid (existT i liX) (remove_equivocating_state_project eqv_is s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
Hv: valid liX (s i, om)valid liX (remove_equivocating_state_project eqv_is s i, om)by rewrite lift_sub_state_to_neq; [apply Hv |]. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
Hv: valid liX (s i, om)valid liX (lift_sub_state_to IM equivocators s eqv_is i, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)strong_projection_transition_preservation_Some Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)strong_projection_transition_preservation_Some Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
lX, lY: label Free
Hl: remove_equivocating_label_project lX = Some lY
s: state Free
om: option message
s': state Free
om': option message
Ht: transition lX (s, om) = (s', om')transition lY (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
Hl: remove_equivocating_label_project (existT i liX) = Some lY
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')transition lY (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
Hl: (if decide (projT1 (existT i liX) ∈ equivocators) then None else Some (existT i liX)) = Some lY
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')transition lY (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
Hl: (if decide (i ∈ equivocators) then None else Some (existT i liX)) = Some lY
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')transition lY (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
n: i ∉ equivocators
Hl: Some (existT i liX) = Some lY
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')transition lY (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
lY: label Free
n: i ∉ equivocators
Hl: Some (existT i liX) = Some lY
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')
H1: existT i liX = lYtransition (existT i liX) (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
Hl: Some (existT i liX) = Some (existT i liX)
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')transition (existT i liX) (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')transition (existT i liX) (remove_equivocating_state_project eqv_is s, om) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
s': state Free
om': option message
Ht: (let (si', om') := transition liX (s i, om) in (state_update IM s i si', om')) = ( s', om')(let (si', om') := transition liX (remove_equivocating_state_project eqv_is s i, om) in (state_update IM (remove_equivocating_state_project eqv_is s) i si', om')) = (remove_equivocating_state_project eqv_is s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
s': state Free
om': option message
Ht: (let (si', om') := transition liX (s i, om) in (state_update IM s i si', om')) = ( s', om')(let (si', om') := transition liX (lift_sub_state_to IM equivocators s eqv_is i, om) in (state_update IM (lift_sub_state_to IM equivocators s eqv_is) i si', om')) = (lift_sub_state_to IM equivocators s' eqv_is, om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
s': state Free
om': option message
Ht: (let (si', om') := transition liX (s i, om) in (state_update IM s i si', om')) = ( s', om')(let (si', om') := transition liX (s i, om) in (state_update IM (lift_sub_state_to IM equivocators s eqv_is) i si', om')) = (lift_sub_state_to IM equivocators s' eqv_is, om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option message
Ht: (state_update IM s i si', _om') = (s', om')(state_update IM (lift_sub_state_to IM equivocators s eqv_is) i si', _om') = (lift_sub_state_to IM equivocators s' eqv_is, om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option message(state_update IM (lift_sub_state_to IM equivocators s eqv_is) i si', om') = (lift_sub_state_to IM equivocators (state_update IM s i si') eqv_is, om')by destruct (decide (i = j)); subst; state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
n: i ∉ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option message
j: indexstate_update IM (lift_sub_state_to IM equivocators s eqv_is) i si' j = lift_sub_state_to IM equivocators (state_update IM s i si') eqv_is jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)strong_projection_transition_consistency_None Free (composite_type IM) remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)strong_projection_transition_consistency_None Free (composite_type IM) remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
lX: label Free
Hl: remove_equivocating_label_project lX = None
s: state Free
om: option message
s': state Free
om': option message
Ht: transition lX (s, om) = (s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
Hl: remove_equivocating_label_project (existT i liX) = None
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
Hl: (if decide (projT1 (existT i liX) ∈ equivocators) then None else Some (existT i liX)) = None
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
Hl: (if decide (i ∈ equivocators) then None else Some (existT i liX)) = None
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
Hl: None = None
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
s: state Free
om: option message
s': state Free
om': option message
Ht: transition (existT i liX) (s, om) = (s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
s: state Free
om: option message
s': state Free
om': option message
Ht: (let (si', om') := transition liX (s i, om) in (state_update IM s i si', om')) = ( s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option message
Ht: (state_update IM s i si', _om') = (s', om')remove_equivocating_state_project eqv_is s' = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option messageremove_equivocating_state_project eqv_is (state_update IM s i si') = remove_equivocating_state_project eqv_is smessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option message
j: indexremove_equivocating_state_project eqv_is (state_update IM s i si') j = remove_equivocating_state_project eqv_is s jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option message
j: indexmatch decide (sub_index_prop equivocators j) with | left e => eqv_is (dexist j e) | right _ => state_update IM s i si' j end = match decide (sub_index_prop equivocators j) with | left e => eqv_is (dexist j e) | right _ => s j endby destruct (decide (i = j)); subst; state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
i: index
liX: label (IM i)
H0: i ∈ equivocators
s: state Free
om: option message
s': state Free
om': option message
si': state (IM i)
_om': option message
j: index
H1: ¬ sub_index_prop equivocators jstate_update IM s i si' j = s jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_initial_state_preservation Free Free (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_initial_state_preservation Free Free (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_is
s: state Free
Hs: initial_state_prop s
i: indexinitial_state_prop (remove_equivocating_state_project eqv_is s i)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_is
s: state Free
Hs: initial_state_prop s
i: indexinitial_state_prop match decide (sub_index_prop equivocators i) with | left e => eqv_is (dexist i e) | right _ => s i endby apply (Heqv_is (dexist i s0)). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_is
s: state Free
Hs: initial_state_prop s
i: index
s0: sub_index_prop equivocators iinitial_state_prop (eqv_is (dexist i s0))
Given any valid trace for the composition of all components and an initial state
for the composition of just the equivocators, the trace obtained by resetting
the components corresponding to the equivocators to those of the given initial
state and removing the transitions corresponding to the equivocators is
still a valid trace.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isVLSM_projection PreFree PreFree remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isVLSM_projection PreFree PreFree remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_valid_preservation Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_transition_preservation_Some Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_transition_consistency_None Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_initial_state_preservation Free Free (remove_equivocating_state_project eqv_is)by apply remove_equivocating_strong_projection_valid_preservation.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_valid_preservation Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)by apply remove_equivocating_strong_projection_transition_preservation_Some.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_transition_preservation_Some Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)by apply remove_equivocating_strong_projection_transition_consistency_None.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_transition_consistency_None Free Free remove_equivocating_label_project (remove_equivocating_state_project eqv_is)by apply remove_equivocating_strong_embedding_initial_state_preservation. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
eqv_is: composite_state (sub_IM IM equivocators)
Heqv_is: composite_initial_state_prop (sub_IM IM equivocators) eqv_isstrong_projection_initial_state_preservation Free Free (remove_equivocating_state_project eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_projection_initial_state_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_projection_initial_state_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
Htr: ∃ (is : state (preloaded_with_all_messages_vlsm Free)) (tr : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Free) is base_s trweak_projection_initial_state_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
is: state (preloaded_with_all_messages_vlsm Free)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Free) is base_s trweak_projection_initial_state_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
is: state (preloaded_with_all_messages_vlsm Free)
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm Free) is base_s tr
eqv_is: state PreSubFree
Heqv_is: initial_state_prop eqv_isvalid_state_prop PreFree (lift_sub_state_to IM equivocators base_s eqv_is)by apply valid_trace_last_pstate in Htr. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
is: state (preloaded_with_all_messages_vlsm Free)
tr: list transition_item
eqv_is: state PreSubFree
Heqv_is: initial_state_prop eqv_is
Htr: finite_valid_trace_init_to PreFree (remove_equivocating_state_project eqv_is is) (remove_equivocating_state_project eqv_is base_s) (VLSM_projection_finite_trace_project (remove_equivocating_transitions_preloaded_projection eqv_is Heqv_is) tr)valid_state_prop PreFree (lift_sub_state_to IM equivocators base_s eqv_is)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
l: composite_label (sub_IM IM equivocators)
s: composite_state (sub_IM IM equivocators)
om: option message
Hv: composite_valid (sub_IM IM equivocators) l (s, om)composite_valid IM (lift_sub_label IM equivocators l) (lift_sub_state_to IM equivocators base_s s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
l: composite_label (sub_IM IM equivocators)
s: composite_state (sub_IM IM equivocators)
om: option message
Hv: composite_valid (sub_IM IM equivocators) l (s, om)composite_valid IM (lift_sub_label IM equivocators l) (lift_sub_state_to IM equivocators base_s s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
l: composite_label (sub_IM IM equivocators)
s: composite_state (sub_IM IM equivocators)
om: option messagecomposite_valid (sub_IM IM equivocators) l (s, om) → composite_valid IM (lift_sub_label IM equivocators l) (lift_sub_state_to IM equivocators base_s s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
i: sub_index equivocators
li: label (sub_IM IM equivocators i)
s: composite_state (sub_IM IM equivocators)
om: option messagecomposite_valid (sub_IM IM equivocators) (existT i li) (s, om) → composite_valid IM (lift_sub_label IM equivocators (existT i li)) (lift_sub_state_to IM equivocators base_s s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
i: sub_index equivocators
li: label (sub_IM IM equivocators i)
s: composite_state (sub_IM IM equivocators)
om: option message
j: index
Hj: sub_index_prop equivocators j
Heq: i = dexist j Hjcomposite_valid (sub_IM IM equivocators) (existT i li) (s, om) → composite_valid IM (lift_sub_label IM equivocators (existT i li)) (lift_sub_state_to IM equivocators base_s s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option messagecomposite_valid (sub_IM IM equivocators) (existT (dexist j Hj) li) (s, om) → composite_valid IM (lift_sub_label IM equivocators (existT (dexist j Hj) li)) (lift_sub_state_to IM equivocators base_s s, om)by erewrite lift_sub_state_to_eq. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option messagevalid li (s (dexist j Hj), om) → valid li (lift_sub_state_to IM equivocators base_s s j, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
l: composite_label (sub_IM IM equivocators)
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
Ht: composite_transition (sub_IM IM equivocators) l (s, om) = (s', om')composite_transition IM (lift_sub_label IM equivocators l) (lift_sub_state_to IM equivocators base_s s, om) = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
l: composite_label (sub_IM IM equivocators)
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
Ht: composite_transition (sub_IM IM equivocators) l (s, om) = (s', om')composite_transition IM (lift_sub_label IM equivocators l) (lift_sub_state_to IM equivocators base_s s, om) = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
i: sub_index equivocators
li: label (sub_IM IM equivocators i)
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
Ht: composite_transition (sub_IM IM equivocators) (existT i li) (s, om) = ( s', om')composite_transition IM (lift_sub_label IM equivocators (existT i li)) (lift_sub_state_to IM equivocators base_s s, om) = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
i: sub_index equivocators
li: label (sub_IM IM equivocators i)
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
Ht: composite_transition (sub_IM IM equivocators) (existT i li) (s, om) = ( s', om')
j: index
Hj: sub_index_prop equivocators j
Heq: i = dexist j Hjcomposite_transition IM (lift_sub_label IM equivocators (existT i li)) (lift_sub_state_to IM equivocators base_s s, om) = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
Ht: composite_transition (sub_IM IM equivocators) (existT (dexist j Hj) li) ( s, om) = (s', om')composite_transition IM (lift_sub_label IM equivocators (existT (dexist j Hj) li)) (lift_sub_state_to IM equivocators base_s s, om) = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message(let (si', om') := transition li (s (dexist j Hj), om) in (state_update (sub_IM IM equivocators) s (dexist j Hj) si', om')) = (s', om') → (let (si', om') := transition li (lift_sub_state_to IM equivocators base_s s j, om) in (state_update IM (lift_sub_state_to IM equivocators base_s s) j si', om')) = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message(let (si', om') := transition li (s (dexist j Hj), om) in (state_update (sub_IM IM equivocators) s (dexist j Hj) si', om')) = (s', om') → (let (si', om') := transition li (s (dexist j Hj), om) in (state_update IM (lift_sub_state_to IM equivocators base_s s) j si', om')) = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message(state_update (sub_IM IM equivocators) s (dexist j Hj) si', _om') = (s', om') → (state_update IM (lift_sub_state_to IM equivocators base_s s) j si', _om') = (lift_sub_state_to IM equivocators base_s s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message(state_update IM (lift_sub_state_to IM equivocators base_s s) j si', om') = (lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message
i: indexstate_update IM (lift_sub_state_to IM equivocators base_s s) j si' i = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option messagesi' = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message
i: index
n: i ≠ jlift_sub_state_to IM equivocators base_s s i = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') iby rewrite lift_sub_state_to_eq with (Hi := Hj); state_update_simpl.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option messagesi' = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message
i: index
n: i ≠ jlift_sub_state_to IM equivocators base_s s i = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message
i: index
n: i ≠ j
e: i ∈ equivocatorslift_sub_state_to IM equivocators base_s s i = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message
i: index
n: i ≠ j
n0: i ∉ equivocatorslift_sub_state_to IM equivocators base_s s i = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') iby rewrite !lift_sub_state_to_eq with (Hi := e); state_update_simpl.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message
i: index
n: i ≠ j
e: i ∈ equivocatorslift_sub_state_to IM equivocators base_s s i = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') iby state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
j: index
Hj: sub_index_prop equivocators j
li: label (sub_IM IM equivocators (dexist j Hj))
s: composite_state (sub_IM IM equivocators)
om: option message
s': composite_state (sub_IM IM equivocators)
om': option message
si': state (sub_IM IM equivocators (dexist j Hj))
_om': option message
i: index
n: i ≠ j
n0: i ∉ equivocatorslift_sub_state_to IM equivocators base_s s i = lift_sub_state_to IM equivocators base_s (state_update (sub_IM IM equivocators) s (dexist j Hj) si') i
Given any valid state for the composition of all components and a valid trace
for the composition of just the equivocators, the trace obtained by completing
the state-components from the trace with the components from the given
valid state is a valid trace for the composition of all components.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sVLSM_weak_embedding PreSubFree PreFree (lift_sub_label IM equivocators) (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sVLSM_weak_embedding PreSubFree PreFree (lift_sub_label IM equivocators) (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_embedding_valid_preservation PreSubFree PreFree (lift_sub_label IM equivocators) (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_embedding_transition_preservation PreSubFree PreFree (lift_sub_label IM equivocators) (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_projection_initial_state_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_embedding_initial_message_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)by red; intros; by apply lift_sub_to_valid, Hv.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_embedding_valid_preservation PreSubFree PreFree (lift_sub_label IM equivocators) (lift_sub_state_to IM equivocators base_s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_embedding_transition_preservation PreSubFree PreFree (lift_sub_label IM equivocators) (lift_sub_state_to IM equivocators base_s)by apply lift_sub_to_transition, Hv.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
l: label PreSubFree
s: state PreSubFree
om: option message
s': state PreSubFree
om': option message
Hv: input_valid_transition PreSubFree l ( s, om) (s', om')transition (lift_sub_label IM equivocators l) (lift_sub_state_to IM equivocators base_s s, om) = (lift_sub_state_to IM equivocators base_s s', om')by apply preloaded_lift_sub_state_to_initial_state.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_projection_initial_state_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)by intro; intros; apply any_message_is_valid_in_preloaded. Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_sweak_embedding_initial_message_preservation PreSubFree PreFree (lift_sub_state_to IM equivocators base_s)
If the composition constraint only depends on the projection sub-state,
then valid traces of the pre_induced_sub_projection can be lifted to valid traces
of the constrained composition.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)weak_embedding_valid_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)weak_embedding_transition_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)strong_projection_initial_state_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)weak_embedding_initial_message_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)weak_embedding_valid_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
l: label (pre_induced_sub_projection IM equivocators constraint)
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
i: index
li: label (IM i)
sX: state (composite_vlsm IM constraint)
Heql: composite_label_sub_projection_option IM equivocators (existT i li) = Some l
H0: composite_state_sub_projection IM equivocators sX = s
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hom: option_valid_message_prop (composite_vlsm IM constraint) ( s, om).2
Hv: valid (existT i li) (sX, (s, om).2)
Hc: constraint (existT i li) (sX, (s, om).2)valid (lift_sub_label IM equivocators l) (lift_sub_state IM equivocators s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
l: label (pre_induced_sub_projection IM equivocators constraint)
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
i: index
li: label (IM i)
sX: state (composite_vlsm IM constraint)
Heql: match decide (i ∈ equivocators) with | left i_in => Some (composite_label_sub_projection IM equivocators (existT i li) i_in) | right _ => None end = Some l
H0: composite_state_sub_projection IM equivocators sX = s
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hom: option_valid_message_prop (composite_vlsm IM constraint) ( s, om).2
Hv: valid (existT i li) (sX, (s, om).2)
Hc: constraint (existT i li) (sX, (s, om).2)valid (lift_sub_label IM equivocators l) (lift_sub_state IM equivocators s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
l: label (pre_induced_sub_projection IM equivocators constraint)
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
i: index
li: label (IM i)
sX: state (composite_vlsm IM constraint)
Hi: i ∈ equivocators
Heql: Some (composite_label_sub_projection IM equivocators (existT i li) Hi) = Some l
H0: composite_state_sub_projection IM equivocators sX = s
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hom: option_valid_message_prop (composite_vlsm IM constraint) ( s, om).2
Hv: valid (existT i li) (sX, (s, om).2)
Hc: constraint (existT i li) (sX, (s, om).2)valid (lift_sub_label IM equivocators l) (lift_sub_state IM equivocators s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
i: index
li: label (IM i)
sX: state (composite_vlsm IM constraint)
Hi: i ∈ equivocators
H0: composite_state_sub_projection IM equivocators sX = s
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hom: option_valid_message_prop (composite_vlsm IM constraint) ( s, om).2
Hv: valid (existT i li) (sX, (s, om).2)
Hc: constraint (existT i li) (sX, (s, om).2)valid li (lift_sub_state IM equivocators s i, om) ∧ constraint (lift_sub_label IM equivocators (composite_label_sub_projection IM equivocators (existT i li) Hi)) (lift_sub_state IM equivocators s, om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
om: option message
i: index
li: label (IM i)
sX: state (composite_vlsm IM constraint)
Hi: i ∈ equivocators
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hc: constraint (existT i li) (sX, (composite_state_sub_projection IM equivocators sX, om).2)
Hv: valid (existT i li) (sX, (composite_state_sub_projection IM equivocators sX, om).2)
Hom: option_valid_message_prop (composite_vlsm IM constraint) (composite_state_sub_projection IM equivocators sX, om).2valid li (composite_state_sub_projection IM equivocators sX (dexist i Hi), om) ∧ constraint (lift_sub_label IM equivocators (composite_label_sub_projection IM equivocators (existT i li) Hi)) (lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) (composite_state_sub_projection IM equivocators sX), om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
om: option message
i: index
li: label (IM i)
sX: state (composite_vlsm IM constraint)
Hi: i ∈ equivocators
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hc: constraint (existT i li) (sX, (composite_state_sub_projection IM equivocators sX, om).2)
Hv: valid (existT i li) (sX, (composite_state_sub_projection IM equivocators sX, om).2)
Hom: option_valid_message_prop (composite_vlsm IM constraint) (composite_state_sub_projection IM equivocators sX, om).2constraint (lift_sub_label IM equivocators (composite_label_sub_projection IM equivocators (existT i li) Hi)) (lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) (composite_state_sub_projection IM equivocators sX), om)by symmetry; apply composite_state_sub_projection_lift_to.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
om: option message
i: index
li: label (IM i)
sX: state (composite_vlsm IM constraint)
Hi: i ∈ equivocators
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hc: constraint (existT i li) (sX, (composite_state_sub_projection IM equivocators sX, om).2)
Hv: valid (existT i li) (sX, (composite_state_sub_projection IM equivocators sX, om).2)
Hom: option_valid_message_prop (composite_vlsm IM constraint) (composite_state_sub_projection IM equivocators sX, om).2composite_state_sub_projection IM equivocators sX = composite_state_sub_projection IM equivocators (lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) (composite_state_sub_projection IM equivocators sX))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)weak_embedding_transition_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
l: label (pre_induced_sub_projection IM equivocators constraint)
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 l)))
_om': option message(state_update IM (lift_sub_state IM equivocators s) (`(projT1 l)) si', om') = (lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) (`(projT1 l)) si')), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
l: label (pre_induced_sub_projection IM equivocators constraint)
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 l)))
_om': option message
i: indexstate_update IM (lift_sub_state IM equivocators s) (`(projT1 l)) si' i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) (`(projT1 l)) si')) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option messagestate_update IM (lift_sub_state IM equivocators s) j si' j = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ jstate_update IM (lift_sub_state IM equivocators s) j si' i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option messagestate_update IM (lift_sub_state IM equivocators s) j si' j = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) jby rewrite state_update_eq, lift_sub_state_to_eq with (Hi := Hj), state_update_eq.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option messagestate_update IM (lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) s) j si' j = lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) (λ subi : sub_index equivocators, state_update IM (lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) s) j si' (`subi)) jmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ jstate_update IM (lift_sub_state IM equivocators s) j si' i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ jlift_sub_state IM equivocators s i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ j
e: i ∈ equivocatorslift_sub_state IM equivocators s i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ j
n0: i ∉ equivocatorslift_sub_state IM equivocators s i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ j
e: i ∈ equivocatorslift_sub_state IM equivocators s i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) iby rewrite !lift_sub_state_to_eq with (Hi := e), state_update_neq, lift_sub_state_to_eq with (Hi := e).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ j
e: i ∈ equivocatorslift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) s i = lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) (λ subi : sub_index equivocators, state_update IM (lift_sub_state_to IM equivocators (λ n : index, `(vs0 (IM n))) s) j si' (`subi)) iby unfold lift_sub_state, lift_sub_state_to; case_decide.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
j: index
Hj: sub_index_prop equivocators j
lj: label (sub_IM IM equivocators (dexist j Hj))
s: state (pre_induced_sub_projection IM equivocators constraint)
om: option message
s': state (pre_induced_sub_projection IM equivocators constraint)
om': option message
si': state (IM (`(projT1 (existT (dexist j Hj) lj))))
_om': option message
i: index
n: i ≠ j
n0: i ∉ equivocatorslift_sub_state IM equivocators s i = lift_sub_state IM equivocators (composite_state_sub_projection IM equivocators (state_update IM (lift_sub_state IM equivocators s) j si')) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)strong_projection_initial_state_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
s: state (pre_induced_sub_projection IM equivocators constraint)
Hs: initial_state_prop sinitial_state_prop (lift_sub_state IM equivocators s)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
s: state (pre_induced_sub_projection IM equivocators constraint)
Hs: initial_state_prop scomposite_initial_state_prop (sub_IM IM equivocators) sby intro sub_i; destruct_dec_sig sub_i i Hi Heqsub_i; subst; apply HsX.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)
sX: state (composite_vlsm IM constraint)
HsX: initial_state_prop sXcomposite_initial_state_prop (sub_IM IM equivocators) (composite_state_sub_projection IM equivocators sX)by intros _ ? m (_ & _ & _ & _ & [_ _ (_ & HmX & _)]). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hconstraint_consistency: ∀ s1 s2 : composite_state IM, composite_state_sub_projection IM equivocators s1 = composite_state_sub_projection IM equivocators s2 → ∀ (l : composite_label IM) (om : option message), constraint l (s1, om) → constraint l (s2, om)weak_embedding_initial_message_preservation (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_state IM equivocators)
A specialization of basic_projection_induces_friendliness for
pre_induced_sub_projections.
message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)projection_friendly_prop (induced_sub_projection_is_projection IM equivocators constraint)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)projection_friendly_prop (induced_sub_projection_is_projection IM equivocators constraint)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)induced_validator_label_lift_prop (composite_label_sub_projection_option IM equivocators) (lift_sub_label IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)induced_validator_state_lift_prop (composite_state_sub_projection IM equivocators) (lift_sub_state IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)induced_validator_transition_consistency_Some (composite_vlsm IM constraint) (composite_type (sub_IM IM equivocators)) (composite_label_sub_projection_option IM equivocators) (composite_state_sub_projection IM equivocators)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)weak_projection_transition_consistency_None (composite_vlsm IM constraint) (composite_type (sub_IM IM equivocators)) (composite_label_sub_projection_option IM equivocators) (composite_state_sub_projection IM equivocators)by apply composite_label_sub_projection_option_lift.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)induced_validator_label_lift_prop (composite_label_sub_projection_option IM equivocators) (lift_sub_label IM equivocators)by apply composite_state_sub_projection_lift.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)induced_validator_state_lift_prop (composite_state_sub_projection IM equivocators) (lift_sub_state IM equivocators)by apply induced_sub_projection_transition_consistency_Some.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)induced_validator_transition_consistency_Some (composite_vlsm IM constraint) (composite_type (sub_IM IM equivocators)) (composite_label_sub_projection_option IM equivocators) (composite_state_sub_projection IM equivocators)by apply induced_sub_projection_transition_consistency_None. Qed. End sec_lift_sub_state_to_preloaded. Section sec_sub_composition_incl. Context {message : Type} `{EqDecision index} (IM : index -> VLSM message) (indices1 indices2 : list index) (Hincl : indices1 ⊆ indices2) (sub_index1_prop_dec : forall i, Decision (sub_index_prop indices1 i) := fun i => sub_index_prop_dec indices1 i) . Definition lift_sub_incl_state (s : composite_state (sub_IM IM indices1)) : composite_state (sub_IM IM indices2) := fun sub_i2 => let i := proj1_sig sub_i2 in match @decide (sub_index_prop indices1 i) (sub_index1_prop_dec i) with | left e => s (dexist i e) | _ => proj1_sig (vs0 (IM i)) end.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
equivocators: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM equivocators): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
base_s: composite_state IM
Hbase_s: constrained_state_prop Free base_s
constraint: composite_label IM → composite_state IM * option message → Prop
Hlift_proj: VLSM_embedding (pre_induced_sub_projection IM equivocators constraint) (composite_vlsm IM constraint) (lift_sub_label IM equivocators) (lift_sub_state IM equivocators)weak_projection_transition_consistency_None (composite_vlsm IM constraint) (composite_type (sub_IM IM equivocators)) (composite_label_sub_projection_option IM equivocators) (composite_state_sub_projection IM equivocators)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) scomposite_initial_state_prop (sub_IM IM indices2) (lift_sub_incl_state s)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) scomposite_initial_state_prop (sub_IM IM indices2) (lift_sub_incl_state s)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) s
i: index
Hi: bool_decide (sub_index_prop indices2 i)initial_state_prop (lift_sub_incl_state s (i ↾ Hi))message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) s
i: index
Hi: bool_decide (sub_index_prop indices2 i)initial_state_prop match decide (sub_index_prop indices1 (`(i ↾ Hi))) with | left e => s (dexist (`(i ↾ Hi)) e) | right _ => `(vs0 (IM (`(i ↾ Hi)))) endmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) s
i: index
Hi: bool_decide (sub_index_prop indices2 i)
H: sub_index_prop indices1 (`(i ↾ Hi))initial_state_prop (s (dexist (`(i ↾ Hi)) H))message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) s
i: index
Hi: bool_decide (sub_index_prop indices2 i)
H: ¬ sub_index_prop indices1 (`(i ↾ Hi))initial_state_prop (`(vs0 (IM (`(i ↾ Hi)))))by apply (Hs (dexist i H)).message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) s
i: index
Hi: bool_decide (sub_index_prop indices2 i)
H: sub_index_prop indices1 (`(i ↾ Hi))initial_state_prop (s (dexist (`(i ↾ Hi)) H))by destruct (vs0 _). Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: composite_state (sub_IM IM indices1)
Hs: composite_initial_state_prop (sub_IM IM indices1) s
i: index
Hi: bool_decide (sub_index_prop indices2 i)
H: ¬ sub_index_prop indices1 (`(i ↾ Hi))initial_state_prop (`(vs0 (IM (`(i ↾ Hi)))))message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
Hm: composite_initial_message_prop (sub_IM IM indices1) mcomposite_initial_message_prop (sub_IM IM indices2) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
Hm: composite_initial_message_prop (sub_IM IM indices1) mcomposite_initial_message_prop (sub_IM IM indices2) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
i: index
Hi: bool_decide (sub_index_prop indices1 i)
Hm: ∃ mi : initial_message (sub_IM IM indices1 (i ↾ Hi)), `mi = mcomposite_initial_message_prop (sub_IM IM indices2) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
i: index
Hi: bool_decide (sub_index_prop indices1 i)
Hm: ∃ mi : initial_message (IM (`(i ↾ Hi))), `mi = mcomposite_initial_message_prop (sub_IM IM indices2) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
i: index
Hi: bool_decide (sub_index_prop indices1 i)
Hm: ∃ mi : initial_message (IM i), `mi = mcomposite_initial_message_prop (sub_IM IM indices2) mby exists (dexist i Hi). Qed. Definition lift_sub_incl_label (l : composite_label (sub_IM IM indices1)) : composite_label (sub_IM IM indices2) := let sub1_i := projT1 l in let i := proj1_sig sub1_i in let H1i := proj2_dsig sub1_i in let H2i := Hincl _ H1i in existT (dexist i H2i) (projT2 l).message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
i: index
Hi: i ∈ indices2
Hm: ∃ mi : initial_message (IM i), `mi = mcomposite_initial_message_prop (sub_IM IM indices2) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: composite_label (sub_IM IM indices1)
s: composite_state (sub_IM IM indices1)
om: option message
Hv: composite_valid (sub_IM IM indices1) l (s, om)composite_valid (sub_IM IM indices2) (lift_sub_incl_label l) (lift_sub_incl_state s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: composite_label (sub_IM IM indices1)
s: composite_state (sub_IM IM indices1)
om: option message
Hv: composite_valid (sub_IM IM indices1) l (s, om)composite_valid (sub_IM IM indices2) (lift_sub_incl_label l) (lift_sub_incl_state s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: composite_label (sub_IM IM indices1)
s: composite_state (sub_IM IM indices1)
om: option messagecomposite_valid (sub_IM IM indices1) l (s, om) → composite_valid (sub_IM IM indices2) (lift_sub_incl_label l) (lift_sub_incl_state s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (sub_IM IM indices1 (dexist i Hi))
s: composite_state (sub_IM IM indices1)
om: option messagevalid li (s (dexist i Hi), om) → valid li (lift_sub_incl_state s (dexist i (Hincl i (proj2_dsig (dexist i Hi)))), om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (sub_IM IM indices1 (dexist i Hi))
s: composite_state (sub_IM IM indices1)
om: option messagevalid li (s (dexist i Hi), om) → valid li (match decide (sub_index_prop indices1 i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option messagevalid li (s (dexist i Hi), om) → valid li (match decide (sub_index_prop indices1 i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end, om)by rewrite (sub_IM_state_pi s H_i Hi). Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option message
H_i: sub_index_prop indices1 ivalid li (s (dexist i Hi), om) → valid li (s (dexist i H_i), om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: composite_label (sub_IM IM indices1)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message
Ht: composite_transition (sub_IM IM indices1) l (s, om) = (s', om')composite_transition (sub_IM IM indices2) (lift_sub_incl_label l) (lift_sub_incl_state s, om) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: composite_label (sub_IM IM indices1)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message
Ht: composite_transition (sub_IM IM indices1) l (s, om) = (s', om')composite_transition (sub_IM IM indices2) (lift_sub_incl_label l) (lift_sub_incl_state s, om) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: composite_label (sub_IM IM indices1)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option messagecomposite_transition (sub_IM IM indices1) l (s, om) = (s', om') → composite_transition (sub_IM IM indices2) (lift_sub_incl_label l) (lift_sub_incl_state s, om) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message(let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices1) s (dexist i Hi) si', om')) = (s', om') → (let (si', om') := transition li (match decide (sub_index_prop indices1 i) with | left e => s (dexist i e) | right _ => `(vs0 (IM i)) end, om) in (state_update (sub_IM IM indices2) (lift_sub_incl_state s) (dexist i (Hincl i (proj2_dsig (dexist i Hi)))) si', om')) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message
H_i: sub_index_prop indices1 i(let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices1) s (dexist i Hi) si', om')) = (s', om') → (let (si', om') := transition li (s (dexist i H_i), om) in (state_update (sub_IM IM indices2) (lift_sub_incl_state s) (dexist i (Hincl i (proj2_dsig (dexist i Hi)))) si', om')) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message
H_i: sub_index_prop indices1 i(let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices1) s (dexist i Hi) si', om')) = (s', om') → (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices2) (lift_sub_incl_state s) (dexist i (Hincl i (proj2_dsig (dexist i Hi)))) si', om')) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message
H_i: sub_index_prop indices1 i
si': state (sub_IM IM indices1 (dexist i Hi))
_om': option messagestate_update (sub_IM IM indices2) (lift_sub_incl_state s) (dexist i (Hincl i (proj2_dsig (dexist i Hi)))) si' = lift_sub_incl_state (state_update (sub_IM IM indices1) s (dexist i Hi) si')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message
H_i: sub_index_prop indices1 i
si': state (sub_IM IM indices1 (dexist i Hi))
_om': option message
j: index
Hj: sub_index_prop indices2 jstate_update (sub_IM IM indices2) (lift_sub_incl_state s) (dexist i (Hincl i (proj2_dsig (dexist i Hi)))) si' (dexist j Hj) = lift_sub_incl_state (state_update (sub_IM IM indices1) s (dexist i Hi) si') (dexist j Hj)by destruct (decide (i = j)); subst; state_update_simpl; cbn; case_decide; state_update_simpl. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
i: index
Hi: sub_index_prop indices1 i
li: label (IM i)
s: composite_state (sub_IM IM indices1)
om: option message
s': composite_state (sub_IM IM indices1)
om': option message
H_i: sub_index_prop indices1 i
si': state (sub_IM IM indices1 (dexist i Hi))
_om': option message
j: index
Hj: sub_index_prop indices2 jstate_update (sub_IM IM indices2) (λ sub_i2 : sub_index indices2, match decide (sub_index_prop indices1 (`sub_i2)) with | left e => s (dexist (`sub_i2) e) | right _ => `(vs0 (IM (`sub_i2))) end) (dexist i (Hincl i (proj2_dsig (dexist i Hi)))) si' (dexist j Hj) = match decide (sub_index_prop indices1 (`(dexist j Hj))) with | left e => state_update (sub_IM IM indices1) s (dexist i Hi) si' (dexist (`(dexist j Hj)) e) | right _ => `(vs0 (IM (`(dexist j Hj)))) endmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)VLSM_embedding (free_composite_vlsm (sub_IM IM indices1)) (free_composite_vlsm (sub_IM IM indices2)) lift_sub_incl_label lift_sub_incl_statemessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)VLSM_embedding (free_composite_vlsm (sub_IM IM indices1)) (free_composite_vlsm (sub_IM IM indices2)) lift_sub_incl_label lift_sub_incl_statemessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
H: valid l (s, om)valid (lift_sub_incl_label l) (lift_sub_incl_state s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
s': state (free_composite_vlsm (sub_IM IM indices1))
om': option message
H: transition l (s, om) = (s', om')transition (lift_sub_incl_label l) (lift_sub_incl_state s, om) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: state (free_composite_vlsm (sub_IM IM indices1))
H: initial_state_prop sinitial_state_prop (lift_sub_incl_state s)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
H: initial_message_prop minitial_message_prop mby apply lift_sub_incl_valid, H.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
H: valid l (s, om)valid (lift_sub_incl_label l) (lift_sub_incl_state s, om)by apply lift_sub_incl_transition.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
s': state (free_composite_vlsm (sub_IM IM indices1))
om': option message
H: transition l (s, om) = (s', om')transition (lift_sub_incl_label l) (lift_sub_incl_state s, om) = (lift_sub_incl_state s', om')by apply lift_sub_incl_state_initial.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
s: state (free_composite_vlsm (sub_IM IM indices1))
H: initial_state_prop sinitial_state_prop (lift_sub_incl_state s)by apply lift_sub_incl_message_initial. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
m: message
H: initial_message_prop minitial_message_prop mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q mVLSM_embedding (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices1)) P) (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices2)) Q) lift_sub_incl_label lift_sub_incl_statemessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q mVLSM_embedding (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices1)) P) (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices2)) Q) lift_sub_incl_label lift_sub_incl_statemessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
H: valid l (s, om)valid (lift_sub_incl_label l) (lift_sub_incl_state s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
s': state (free_composite_vlsm (sub_IM IM indices1))
om': option message
H: transition l (s, om) = (s', om')transition (lift_sub_incl_label l) (lift_sub_incl_state s, om) = (lift_sub_incl_state s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
s: state (free_composite_vlsm (sub_IM IM indices1))
H: initial_state_prop sinitial_state_prop (lift_sub_incl_state s)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
m: message
H: initial_message_prop minitial_message_prop mby apply lift_sub_incl_valid, H.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
H: valid l (s, om)valid (lift_sub_incl_label l) (lift_sub_incl_state s, om)by apply lift_sub_incl_transition.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
l: label (free_composite_vlsm (sub_IM IM indices1))
s: state (free_composite_vlsm (sub_IM IM indices1))
om: option message
s': state (free_composite_vlsm (sub_IM IM indices1))
om': option message
H: transition l (s, om) = (s', om')transition (lift_sub_incl_label l) (lift_sub_incl_state s, om) = (lift_sub_incl_state s', om')by apply lift_sub_incl_state_initial.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
s: state (free_composite_vlsm (sub_IM IM indices1))
H: initial_state_prop sinitial_state_prop (lift_sub_incl_state s)by apply lift_sub_incl_message_initial. Qed. End sec_sub_composition_incl. Section sec_sub_composition_sender. Context {message : Type} `{EqDecision index} (IM : index -> VLSM message) (indices : list index) (sub_index_prop_dec : forall i, Decision (sub_index_prop indices i) := sub_index_prop_dec indices) {validator : Type} (A : validator -> index) (sender : message -> option validator) (Hsender_safety : sender_safety_alt_prop IM A sender) .message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices1, indices2: list index
Hincl: indices1 ⊆ indices2
sub_index1_prop_dec:= λ i : index, sub_index_prop_dec indices1 i: ∀ i : index, Decision (sub_index_prop indices1 i)
P, Q: message → Prop
Hpq: ∀ m : message, P m → Q m
m: message
H: initial_message_prop minitial_message_prop m
If a sub-composition can_emit a message then its sender must be one of
the components of the sub-composition.
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
P: message → Prop∀ (m : message) (v : validator), sender m = Some v → can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) m → A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
P: message → Prop∀ (m : message) (v : validator), sender m = Some v → can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) m → A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
P: message → Prop
m: message
v: validator
Hsender: sender m = Some v
Hemit: can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) mA v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
Hemit: can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) mA v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
sub_i: sub_index indices
li: label (sub_IM IM indices sub_i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) (existT sub_i li) (s, om) ( s', Some m)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) (existT (dexist i Hi) li) ( s, om) (s', Some m)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) (existT (dexist i Hi) li) ( s, om) (s', Some m)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) (existT (dexist i Hi) li) ( s, om) (s', Some m)
Hproj: constrained_state_prop (free_composite_vlsm IM) (`(composite_s0 IM)) → VLSM_weak_embedding (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices) (lift_sub_state_to IM indices (`(composite_s0 IM)))A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) (existT (dexist i Hi) li) ( s, om) (s', Some m)
Hproj: VLSM_weak_embedding (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices) (lift_sub_state_to IM indices (`(composite_s0 IM)))A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition {| vlsm_type := preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)) |} (existT (dexist i Hi) li) ( s, om) (s', Some m)
Hproj: VLSM_weak_embedding (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices) (lift_sub_state_to IM indices (`(composite_s0 IM)))A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) (lift_sub_state_to IM indices (`(composite_s0 IM)) s, om) (lift_sub_state_to IM indices (`(composite_s0 IM)) s', Some m)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) (lift_sub_state_to IM indices (`(composite_s0 IM)) s, om) (lift_sub_state_to IM indices (`(composite_s0 IM)) s', Some m)
Hproj: VLSM_projection (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)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (lift_sub_state_to IM indices (`(composite_s0 IM)) s', Some m)
Hproj: VLSM_projection (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)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
lX: composite_label IM
HeqlX: lX = lift_sub_label IM indices (existT (dexist i Hi) li)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) lX ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
lX: composite_label IM
HeqlX: lX = lift_sub_label IM indices (existT (dexist i Hi) li)
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) lX ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)
Hproj_t: composite_project_label IM i lX = Some li → ∀ (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_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) lX (s, im) (s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li ((λ s0 : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s0 i) s, im) ((λ s0 : state (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)), s0 i) s', om)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)
Hproj_t: composite_project_label IM i (existT i li) = Some li → ∀ (s : composite_state IM) (im : option message) (s' : composite_state IM) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li ( s i, im) (s' i, om)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)
Hproj_t: composite_project_label IM i (existT i li) = Some li → ∀ (s : composite_state IM) (im : option message) (s' : composite_state IM) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li ( s i, im) (s' i, om)composite_project_label IM i (existT i li) = Some limessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)
Hproj_t: ∀ (s : composite_state IM) (im : option message) (s' : composite_state IM) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s i, im) ( s' i, om)A v ∈ indicesmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)
Hproj_t: composite_project_label IM i (existT i li) = Some li → ∀ (s : composite_state IM) (im : option message) (s' : composite_state IM) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li ( s i, im) (s' i, om)composite_project_label IM i (existT i li) = Some liby rewrite decide_True_pi with eq_refl.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)
Hproj_t: composite_project_label IM i (existT i li) = Some li → ∀ (s : composite_state IM) (im : option message) (s' : composite_state IM) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li ( s i, im) (s' i, om)match decide (i = i) with | left e => Some (eq_rect_r (λ n : index, label (IM n)) li e) | right _ => None end = Some liby rewrite (Hsender_safety i); [| eexists _; eauto]. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
Hsender_safety: ∀ i : index, can_emit (preloaded_with_all_messages_vlsm (IM i)) m → A v = i
P: message → Prop
Hsender: sender m = Some v
s: state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
om: option message
i: index
Hi: sub_index_prop indices i
li: label (IM i)
s': state (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P)
sX: composite_state IM
HeqsX: sX = lift_sub_state_to IM indices (`(composite_s0 IM)) s
sX': composite_state IM
HeqsX': sX' = lift_sub_state_to IM indices (`(composite_s0 IM)) s'
Ht: input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (lift_sub_label IM indices (existT (dexist i Hi) li)) ( sX, om) (sX', Some m)
Hproj: VLSM_projection (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)
Hproj_t: ∀ (s : composite_state IM) (im : option message) (s' : composite_state IM) (om : option message), input_valid_transition (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (s, im) ( s', om) → input_valid_transition (preloaded_with_all_messages_vlsm (IM i)) li (s i, im) ( s' i, om)A v ∈ indices
Definition sub_IM_sender (m : message) : option (dsig (fun v => A v ∈ indices)) := match sender m with | None => None | Some v => match (decide (A v ∈ indices)) with | left Av_in => Some (@dexist _ (fun v => A v ∈ indices) _ v Av_in) | _ => None end end. Definition sub_IM_A (v : dsig (fun v => A v ∈ indices)) : sub_index indices := dexist (A (proj1_sig v)) (proj2_dsig v).message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A senderchannel_authentication_prop IM A sender → channel_authentication_prop (sub_IM IM indices) sub_IM_A sub_IM_sendermessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A senderchannel_authentication_prop IM A sender → channel_authentication_prop (sub_IM IM indices) sub_IM_A sub_IM_sendermessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
sub_i: sub_index indices
m: message
Hemit: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices sub_i)) mchannel_authenticated_message sub_IM_A sub_IM_sender sub_i mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
sub_i: sub_index indices
m: message
Hemit: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices sub_i)) m
i: index
Hi: sub_index_prop indices i
Heqsub_i: sub_i = dexist i Hichannel_authenticated_message sub_IM_A sub_IM_sender sub_i mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
i: index
Hi: sub_index_prop indices i
Hemit: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices (dexist i Hi))) mchannel_authenticated_message sub_IM_A sub_IM_sender (dexist i Hi) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
i: index
Hi: sub_index_prop indices i
Hemit: channel_authenticated_message A sender (`(dexist i Hi)) mchannel_authenticated_message sub_IM_A sub_IM_sender (dexist i Hi) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
i: index
Hi: sub_index_prop indices i
Hemit: option_map A (sender m) = Some (`(dexist i Hi))option_map sub_IM_A (sub_IM_sender m) = Some (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
i: index
Hi: sub_index_prop indices i
Hemit: option_map A (sender m) = Some ioption_map sub_IM_A (sub_IM_sender m) = Some (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
i: index
Hi: sub_index_prop indices i
Hemit: option_map A (sender m) = Some ioption_map sub_IM_A match sender m with | Some v => match decide (A v ∈ indices) with | left Av_in => Some (dexist v Av_in) | right _ => None end | None => None end = Some (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
i: index
Hi: sub_index_prop indices i
v: validator
Hemit: option_map A (Some v) = Some ioption_map sub_IM_A match decide (A v ∈ indices) with | left Av_in => Some (dexist v Av_in) | right _ => None end = Some (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
i: index
Hi: sub_index_prop indices i
v: validator
Hemit: A v = ioption_map sub_IM_A match decide (A v ∈ indices) with | left Av_in => Some (dexist v Av_in) | right _ => None end = Some (dexist i Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
v: validator
Hi: sub_index_prop indices (A v)option_map sub_IM_A match decide (A v ∈ indices) with | left Av_in => Some (dexist v Av_in) | right _ => None end = Some (dexist (A v) Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
v: validator
Hi: sub_index_prop indices (A v)
H: A v ∈ indicesoption_map sub_IM_A (Some (dexist v H)) = Some (dexist (A v) Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
v: validator
Hi: sub_index_prop indices (A v)
H: A v ∈ indicesSome (sub_IM_A (dexist v H)) = Some (dexist (A v) Hi)by apply dsig_eq. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hsigned: channel_authentication_prop IM A sender
m: message
v: validator
Hi: sub_index_prop indices (A v)
H: A v ∈ indicessub_IM_A (dexist v H) = dexist (A v) Himessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A senderno_initial_messages_in_IM_prop IM → no_initial_messages_in_IM_prop (sub_IM IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A senderno_initial_messages_in_IM_prop IM → no_initial_messages_in_IM_prop (sub_IM IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hno_init: no_initial_messages_in_IM_prop IM
sub_i: sub_index indices
m: message¬ initial_message_prop mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hno_init: no_initial_messages_in_IM_prop IM
sub_i: sub_index indices
m: message
i: index
Hi: sub_index_prop indices i
Heqsub_i: sub_i = dexist i Hi¬ initial_message_prop mby apply Hno_init. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
Hno_init: no_initial_messages_in_IM_prop IM
m: message
i: index
Hi: sub_index_prop indices i¬ initial_message_prop mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sendersender_safety_alt_prop (sub_IM IM indices) sub_IM_A sub_IM_sendermessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sendersender_safety_alt_prop (sub_IM IM indices) sub_IM_A sub_IM_sendermessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
sub_v: dsig (λ v : validator, A v ∈ indices)
Hsender: sub_IM_sender m = Some sub_v
sub_i: sub_index indices
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices sub_i)) msub_IM_A sub_v = sub_imessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
sub_v: dsig (λ v : validator, A v ∈ indices)
Hsender: sub_IM_sender m = Some sub_v
sub_i: sub_index indices
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices sub_i)) m
v: validator
HAv: A v ∈ indices
Heqsub_v: sub_v = dexist v HAvsub_IM_A sub_v = sub_imessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
sub_v: dsig (λ v : validator, A v ∈ indices)
Hsender: sub_IM_sender m = Some sub_v
sub_i: sub_index indices
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices sub_i)) m
v: validator
HAv: A v ∈ indices
Heqsub_v: sub_v = dexist v HAv
i: index
Hi: sub_index_prop indices i
Heqsub_i: sub_i = dexist i Hisub_IM_A sub_v = sub_imessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
v: validator
HAv: A v ∈ indices
Hsender: sub_IM_sender m = Some (dexist v HAv)
i: index
Hi: sub_index_prop indices i
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices (dexist i Hi))) msub_IM_A (dexist v HAv) = dexist i Himessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
v: validator
HAv: A v ∈ indices
Hsender: sub_IM_sender m = Some (dexist v HAv)
i: index
Hi: sub_index_prop indices i
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices (dexist i Hi))) mdexist (A (`(dexist v HAv))) (proj2_dsig (dexist v HAv)) = dexist i Himessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
v: validator
HAv: A v ∈ indices
Hsender: sub_IM_sender m = Some (dexist v HAv)
i: index
Hi: sub_index_prop indices i
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices (dexist i Hi))) m`(dexist (A (`(dexist v HAv))) (proj2_dsig (dexist v HAv))) = `(dexist i Hi)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
v: validator
HAv: A v ∈ indices
Hsender: sub_IM_sender m = Some (dexist v HAv)
i: index
Hi: sub_index_prop indices i
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices (dexist i Hi))) mA v = imessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
m: message
v: validator
HAv: A v ∈ indices
Hsender: sub_IM_sender m = Some (dexist v HAv)
i: index
Hi: sub_index_prop indices i
Hm: can_emit (preloaded_with_all_messages_vlsm (sub_IM IM indices (dexist i Hi))) msender m = Some vmessage, index: Type
EqDecision0: EqDecision index
indices: list index
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
HAv: A v ∈ indices
Hsender: sub_IM_sender m = Some (dexist v HAv)sender m = Some vmessage, index: Type
EqDecision0: EqDecision index
indices: list index
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
HAv: A v ∈ indices
Hsender: match sender m with | Some v => match decide (A v ∈ indices) with | left Av_in => Some (dexist v Av_in) | right _ => None end | None => None end = Some (dexist v HAv)sender m = Some vmessage, index: Type
EqDecision0: EqDecision index
indices: list index
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
HAv: A v ∈ indices
_v: validator
Hsender_v: sender m = Some _v
Hsender: match decide (A _v ∈ indices) with | left Av_in => Some (dexist _v Av_in) | right _ => None end = Some (dexist v HAv)Some _v = Some vby inversion Hsender; itauto. Qed. Context `{forall sub_i, HasBeenSentCapability (sub_IM IM indices sub_i)} .message, index: Type
EqDecision0: EqDecision index
indices: list index
validator: Type
A: validator → index
sender: message → option validator
m: message
v: validator
HAv: A v ∈ indices
_v: validator
Hsender_v: sender m = Some _v
H: A _v ∈ indices
Hsender: Some (dexist _v H) = Some (dexist v HAv)Some _v = Some vmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indicescomposite_has_been_sent (sub_IM IM indices) s m → has_been_sent (sub_IM IM indices (dexist (A v) Hv)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indicescomposite_has_been_sent (sub_IM IM indices) s m → has_been_sent (sub_IM IM indices (dexist (A v) Hv)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
Htr: ∃ (is : state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))) (tr : list transition_item), finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s trcomposite_has_been_sent (sub_IM IM indices) s m → has_been_sent (sub_IM IM indices (dexist (A v) Hv)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s trcomposite_has_been_sent (sub_IM IM indices) s m → has_been_sent (sub_IM IM indices (dexist (A v) Hv)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s trsub_IM_sender m = Some (dexist v Hv)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
Hsub_sender: sub_IM_sender m = Some (dexist v Hv)composite_has_been_sent (sub_IM IM indices) s m → has_been_sent (sub_IM IM indices (dexist (A v) Hv)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s trsub_IM_sender m = Some (dexist v Hv)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s trmatch sender m with | Some v => match decide (A v ∈ indices) with | left Av_in => Some (dexist v Av_in) | right _ => None end | None => None end = Some (dexist v Hv)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s trmatch decide (A v ∈ indices) with | left Av_in => Some (dexist v Av_in) | right _ => None end = Some (dexist v Hv)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
H0: A v ∈ indicesSome (dexist v H0) = Some (dexist v Hv)by apply dsig_eq.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
H0: A v ∈ indicesdexist v H0 = dexist v Hvmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
Hsub_sender: sub_IM_sender m = Some (dexist v Hv)composite_has_been_sent (sub_IM IM indices) s m → has_been_sent (sub_IM IM indices (dexist (A v) Hv)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
Hsub_sender: sub_IM_sender m = Some (dexist v Hv)has_been_sent (sub_IM IM indices (sub_IM_A (dexist v Hv))) (s (sub_IM_A (dexist v Hv))) m → has_been_sent (sub_IM IM indices (dexist (A v) Hv)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
Hsub_sender: sub_IM_sender m = Some (dexist v Hv)has_been_sent (IM (A v)) (s (dexist (A v) (proj2_dsig (dexist v Hv)))) m → has_been_sent (IM (A v)) (s (dexist (A v) Hv)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
Hsub_sender: sub_IM_sender m = Some (dexist v Hv)has_been_sent (IM (A v)) (s (dexist (A v) Hv)) m → has_been_sent (IM (A v)) (s (dexist (A v) Hv)) mby revert Hs; apply preloaded_valid_state_projection with (j := dexist (A v) Hv). Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
s: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
Hs: constrained_state_prop (free_composite_vlsm (sub_IM IM indices)) s
m: message
v: validator
Hsender: sender m = Some v
Hv: A v ∈ indices
is: state (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices)))
tr: list transition_item
Htr: finite_valid_trace_init_to (preloaded_with_all_messages_vlsm (free_composite_vlsm (sub_IM IM indices))) is s tr
Hsub_sender: sub_IM_sender m = Some (dexist v Hv)constrained_state_prop (IM (A v)) (s (dexist (A v) Hv))
No-equivocation results for sub-composition
Definition sub_IM_not_equivocating_constraint (l : composite_label IM) (som : composite_state IM * option message) : Prop := let (s, om) := som in match om with | None => True | Some m => match option_map A (sender m) with | None => True | Some i => match decide (i ∈ indices) with | left non_byzantine_i => let sub_i := @dexist _ (sub_index_prop indices) _ i non_byzantine_i in has_been_sent (sub_IM IM indices sub_i) (s i) m | _ => True end end end. Definition non_sub_index_authenticated_message (m : message) : Prop := exists i, i ∉ indices /\ channel_authenticated_message A sender i m. Context (no_initial_messages_in_IM : no_initial_messages_in_IM_prop IM) (can_emit_signed : channel_authentication_prop IM A sender) .message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
l: label (pre_induced_sub_projection IM indices constraint)
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
Hv: valid l (s, om)composite_valid (sub_IM IM indices) l (s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
l: label (pre_induced_sub_projection IM indices constraint)
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
Hv: valid l (s, om)composite_valid (sub_IM IM indices) l (s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
l: label (pre_induced_sub_projection IM indices constraint)
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
i: index
lXi: label (IM i)
sX: state (composite_vlsm IM constraint)
Heql: composite_label_sub_projection_option IM indices (existT i lXi) = Some l
H0: composite_state_sub_projection IM indices sX = s
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hom: option_valid_message_prop (composite_vlsm IM constraint) ( s, om).2
Hv: valid (existT i lXi) (sX, (s, om).2)
Hc: constraint (existT i lXi) (sX, (s, om).2)composite_valid (sub_IM IM indices) l (s, om)by case_decide; [inversion Heql; subst |]. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
l: label (pre_induced_sub_projection IM indices constraint)
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
i: index
lXi: label (IM i)
sX: state (composite_vlsm IM constraint)
Heql: match decide (i ∈ indices) with | left i_in => Some (composite_label_sub_projection IM indices (existT i lXi) i_in) | right _ => None end = Some l
H0: composite_state_sub_projection IM indices sX = s
HsX: valid_state_prop (composite_vlsm IM constraint) sX
Hom: option_valid_message_prop (composite_vlsm IM constraint) ( s, om).2
Hv: valid (existT i lXi) (sX, (s, om).2)
Hc: constraint (existT i lXi) (sX, (s, om).2)composite_valid (sub_IM IM indices) l (s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop∀ (l : label (pre_induced_sub_projection IM indices constraint)) (s : state (pre_induced_sub_projection IM indices constraint)) (om : option message) (s' : state (pre_induced_sub_projection IM indices constraint)) (om' : option message), transition l (s, om) = (s', om') ↔ composite_transition (sub_IM IM indices) l (s, om) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop∀ (l : label (pre_induced_sub_projection IM indices constraint)) (s : state (pre_induced_sub_projection IM indices constraint)) (om : option message) (s' : state (pre_induced_sub_projection IM indices constraint)) (om' : option message), transition l (s, om) = (s', om') ↔ composite_transition (sub_IM IM indices) l (s, om) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
l: label (pre_induced_sub_projection IM indices constraint)
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option messagetransition l (s, om) = (s', om') ↔ composite_transition (sub_IM IM indices) l (s, om) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
sub_i: sub_index indices
li: label (sub_IM IM indices sub_i)
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option messagetransition (existT sub_i li) (s, om) = (s', om') ↔ composite_transition (sub_IM IM indices) (existT sub_i li) (s, om) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
sub_i: sub_index indices
li: label (sub_IM IM indices sub_i)
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option message
i: index
Hi: sub_index_prop indices i
Heqsub_i: sub_i = dexist i Hitransition (existT sub_i li) (s, om) = (s', om') ↔ composite_transition (sub_IM IM indices) (existT sub_i li) (s, om) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option messagetransition (existT (dexist i Hi) li) (s, om) = (s', om') ↔ composite_transition (sub_IM IM indices) (existT (dexist i Hi) li) (s, om) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option message(let (s'X, om') := let (si', om') := transition li (lift_sub_state IM indices s i, om) in (state_update IM (lift_sub_state IM indices s) i si', om') in (composite_state_sub_projection IM indices s'X, om')) = (s', om') ↔ (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices) s (dexist i Hi) si', om')) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option message(let (s'X, om') := let (si', om') := transition li (lift_sub_state IM indices s i, om) in (state_update IM (lift_sub_state IM indices s) i si', om') in (composite_state_sub_projection IM indices s'X, om')) = (s', om') ↔ (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices) s (dexist i Hi) si', om')) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option message(let (s'X, om') := let (si', om') := transition li (lift_sub_state IM indices s i, om) in (state_update IM (lift_sub_state IM indices s) i si', om') in (composite_state_sub_projection IM indices s'X, om')) = (s', om') ↔ (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices) s (dexist i Hi) si', om')) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option message(let (s'X, om') := let (si', om') := transition li (lift_sub_state_to IM indices (λ n : index, `(vs0 (IM n))) s i, om) in (state_update IM (lift_sub_state IM indices s) i si', om') in (composite_state_sub_projection IM indices s'X, om')) = (s', om') ↔ (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices) s (dexist i Hi) si', om')) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option message(let (s'X, om') := let (si', om') := transition li (s (dexist i Hi), om) in (state_update IM (lift_sub_state IM indices s) i si', om') in (composite_state_sub_projection IM indices s'X, om')) = (s', om') ↔ (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM indices) s (dexist i Hi) si', om')) = (s', om')by split; inversion 1; subst; clear H; f_equal; extensionality sub_j ; destruct_dec_sig sub_j j Hj Heqsub_j ; subst sub_j ; unfold composite_state_sub_projection ; simpl ; (destruct (decide (i = j)); subst; state_update_simpl; [done |]) ; unfold lift_sub_state ; rewrite (lift_sub_state_to_eq _ _ _ _ _ Hj) ; itauto. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
constraint: composite_label IM → composite_state IM * option message → Prop
i: index
Hi: sub_index_prop indices i
li: label (sub_IM IM indices (dexist i Hi))
s: state (pre_induced_sub_projection IM indices constraint)
om: option message
s': state (pre_induced_sub_projection IM indices constraint)
om': option message
si': state (IM i)
_om': option message(composite_state_sub_projection IM indices (state_update IM (lift_sub_state IM indices s) i si'), _om') = (s', om') ↔ (state_update (sub_IM IM indices) s (dexist i Hi) si', _om') = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
om: option message
Hv: valid l (s, om)composite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
om: option message
Hv: valid l (s, om)composite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
Hv: valid l (s, Some m)composite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hm: option_valid_message_prop (composite_vlsm IM sub_IM_not_equivocating_constraint) (s, Some m).2
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)composite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hm: option_valid_message_prop (composite_vlsm IM sub_IM_not_equivocating_constraint) (s, Some m).2
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
Hhas_sender: sender m ≠ Nonecomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hm: option_valid_message_prop (composite_vlsm IM sub_IM_not_equivocating_constraint) (s, Some m).2
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some vcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
i: index
im: message
Him: initial_message_prop im
Heqm: `(im ↾ Him) = m
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some vcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hemitted: can_emit (composite_vlsm IM sub_IM_not_equivocating_constraint) m
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some vcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l ( s, Some m)by elim (no_initial_messages_in_IM i im).message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
i: index
im: message
Him: initial_message_prop im
Heqm: `(im ↾ Him) = m
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some vcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hemitted: can_emit (composite_vlsm IM sub_IM_not_equivocating_constraint) m
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some vcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some v
Hemitted: can_emit {| vlsm_type := free_composite_vlsm IM; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm IM) |} mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some v
Hemitted: can_emit {| vlsm_type := free_composite_vlsm IM; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm IM) |} m
Hemit: option_map A (sender m) = Some (A v) → can_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m → can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some v
Hemitted: can_emit {| vlsm_type := free_composite_vlsm IM; vlsm_machine := preloaded_with_all_messages_vlsm (free_composite_vlsm IM) |} m
Hemit: can_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m → can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
Hc: sub_IM_not_equivocating_constraint lX (sX, (s, Some m).2)
v: validator
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
v: validator
H1: A v ∈ indices
Hc: has_been_sent (sub_IM IM indices (dexist (A v) H1)) (sX (A v)) m
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
v: validator
H1: A v ∉ indices
Hc: True
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l ( s, Some m)by left; subst; eexists; exact Hc.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
v: validator
H1: A v ∈ indices
Hc: has_been_sent (sub_IM IM indices (dexist (A v) H1)) (sX (A v)) m
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
v: validator
H1: A v ∉ indices
Hc: True
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mcomposite_no_equivocations_except_from (sub_IM IM indices) non_sub_index_authenticated_message l (s, Some m)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
v: validator
H1: A v ∉ indices
Hc: True
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) mnon_sub_index_authenticated_message mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
v: validator
H1: A v ∉ indices
Hc: True
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m(A v ∉ indices) ∧ channel_authenticated_message A sender (A v) mby rewrite Hsender; itauto. Qed. End sec_sub_composition_sender. Section sec_sub_composition_all.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
sub_index_prop_dec:= SubProjectionTraces.sub_index_prop_dec indices: ∀ i : index, Decision (sub_index_prop indices i)
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
H: ∀ sub_i : sub_index indices, HasBeenSentCapability (sub_IM IM indices sub_i)
no_initial_messages_in_IM: no_initial_messages_in_IM_prop IM
can_emit_signed: channel_authentication_prop IM A sender
l: label (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
s: state (pre_induced_sub_projection IM indices sub_IM_not_equivocating_constraint)
m: message
lX: label (composite_vlsm IM sub_IM_not_equivocating_constraint)
sX: state (composite_vlsm IM sub_IM_not_equivocating_constraint)
H0: composite_state_sub_projection IM indices sX = s
v: validator
H1: A v ∉ indices
Hc: True
Hsender: sender m = Some v
Hemitted: can_emit (preloaded_with_all_messages_vlsm (IM (A v))) m(A v ∉ indices) ∧ option_map A (sender m) = Some (A v)
A subcomposition with all the components
Context {message : Type} `{finite.Finite index} (IM : index -> VLSM message) (sub_IM := sub_IM IM (enum index)) . Program Definition free_sub_free_index (i : index) : sub_index (enum index) := dexist i _.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message∀ i : index, sub_index_prop (enum index) iby intros; apply elem_of_enum. Qed. Definition free_sub_free_label (l : composite_label IM) : composite_label sub_IM := let (i, li) := l in existT (free_sub_free_index i) li. Definition free_sub_free_state (sub_s : composite_state sub_IM) : composite_state IM := fun i => sub_s (free_sub_free_index i). Definition free_sub_free_constraint (constraint : composite_label IM -> composite_state IM * option message -> Prop) : composite_label sub_IM -> composite_state sub_IM * option message -> Prop := fun l som => let (s, om) := som in constraint (lift_sub_label IM (enum index) l) (free_sub_free_state s, om). Context (constraint : composite_label IM -> composite_state IM * option message -> Prop) (X := composite_vlsm IM constraint) (SubX := composite_vlsm sub_IM (free_sub_free_constraint constraint)) .message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message∀ i : index, sub_index_prop (enum index) imessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → PropVLSM_embedding (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → PropVLSM_embedding (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_embedding_valid_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_embedding_transition_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_projection_initial_state_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_embedding_initial_message_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed)by intros [i li] *; auto.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_embedding_valid_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_embedding_transition_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Prop
i: index
li: label (IM i)
s: state (preloaded_vlsm X seed)
om: option message
s': state (preloaded_vlsm X seed)
om': option message(let (si', om') := transition li (s i, om) in (state_update IM s i si', om')) = (s', om') → (let (si', om') := transition li (composite_state_sub_projection IM (enum index) s (free_sub_free_index i), om) in (state_update sub_IM (composite_state_sub_projection IM (enum index) s) (free_sub_free_index i) si', om')) = (composite_state_sub_projection IM (enum index) s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Prop
i: index
li: label (IM i)
s: state (preloaded_vlsm X seed)
om: option message
s': state (preloaded_vlsm X seed)
om': option message
si': state (IM i)
_om': option messagestate_update (SubProjectionTraces.sub_IM IM (enum index)) (composite_state_sub_projection IM (enum index) s) (free_sub_free_index i) si' = composite_state_sub_projection IM (enum index) (state_update IM s i si')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Prop
i: index
li: label (IM i)
s: state (preloaded_vlsm X seed)
om: option message
s': state (preloaded_vlsm X seed)
om': option message
si': state (IM i)
_om': option message
j: index
Hj: sub_index_prop (enum index) jstate_update (SubProjectionTraces.sub_IM IM (enum index)) (composite_state_sub_projection IM (enum index) s) (free_sub_free_index i) si' (dexist j Hj) = state_update IM s i si' jby destruct (decide (i = j)); subst; state_update_simpl.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Prop
i: index
li: label (IM i)
s: state (preloaded_vlsm X seed)
om: option message
s': state (preloaded_vlsm X seed)
om': option message
si': state (IM i)
_om': option message
j: index
Hj: sub_index_prop (enum index) jstate_update (SubProjectionTraces.sub_IM IM (enum index)) (composite_state_sub_projection IM (enum index) s) (dexist i (free_sub_free_index_obligation_1 i)) si' (dexist j Hj) = state_update IM s i si' jby intros s Hs; rapply (composite_initial_state_sub_projection IM).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_projection_initial_state_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed) (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Propstrong_embedding_initial_message_preservation (preloaded_vlsm X seed) (preloaded_vlsm SubX seed)by exists (free_sub_free_index i). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
seed: message → Prop
m: message
i: index
Hi: ∃ mi : initial_message (IM i), `mi = minitial_message_prop mmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messageVLSM_embedding X SubX free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messageVLSM_embedding X SubX free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_valid_preservation X SubX free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_transition_preservation X SubX free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_projection_initial_state_preservation X SubX (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_initial_message_preservation X SubXby intros [i li] *; auto.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_valid_preservation X SubX free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_transition_preservation X SubX free_sub_free_label (composite_state_sub_projection IM (enum index))message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
li: label (IM i)
s: state X
om: option message
s': state X
om': option message
si': state (IM i)
_om': option message(state_update (SubProjectionTraces.sub_IM IM (enum index)) (composite_state_sub_projection IM (enum index) s) (free_sub_free_index i) si', om') = (composite_state_sub_projection IM (enum index) (state_update IM s i si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
li: label (IM i)
s: state X
om: option message
s': state X
om': option message
si': state (IM i)
_om': option message
j: index
Hj: sub_index_prop (enum index) jstate_update (SubProjectionTraces.sub_IM IM (enum index)) (composite_state_sub_projection IM (enum index) s) (free_sub_free_index i) si' (dexist j Hj) = state_update IM s i si' jby destruct (decide (i = j)); subst; state_update_simpl.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
li: label (IM i)
s: state X
om: option message
s': state X
om': option message
si': state (IM i)
_om': option message
j: index
Hj: sub_index_prop (enum index) jstate_update (SubProjectionTraces.sub_IM IM (enum index)) (composite_state_sub_projection IM (enum index) s) (dexist i (free_sub_free_index_obligation_1 i)) si' (dexist j Hj) = state_update IM s i si' jby intros s Hs; rapply (composite_initial_state_sub_projection IM).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_projection_initial_state_preservation X SubX (composite_state_sub_projection IM (enum index))by intros m [i Hi]; exists (free_sub_free_index i). Qed.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_initial_message_preservation X SubXmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messageVLSM_embedding SubX X (lift_sub_label IM (enum index)) free_sub_free_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messageVLSM_embedding SubX X (lift_sub_label IM (enum index)) free_sub_free_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_valid_preservation SubX X (lift_sub_label IM (enum index)) free_sub_free_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_transition_preservation SubX X (lift_sub_label IM (enum index)) free_sub_free_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_projection_initial_state_preservation SubX X free_sub_free_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_initial_message_preservation SubX Xmessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_valid_preservation SubX X (lift_sub_label IM (enum index)) free_sub_free_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
sub_i: sub_index (enum index)
li: label (sub_IM sub_i)
s: state SubX
om: option message
Hv: valid (existT sub_i li) (s, om)
Hc: free_sub_free_constraint constraint (existT sub_i li) (s, om)valid (lift_sub_label IM (enum index) (existT sub_i li)) (free_sub_free_state s, om)by rewrite (sub_IM_state_pi s (free_sub_free_index_obligation_1 i) Hi).message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
Hi: sub_index_prop (enum index) i
li: label (sub_IM (dexist i Hi))
s: composite_state sub_IM
om: option message
Hc: constraint (lift_sub_label IM (enum index) (existT (dexist i Hi) li)) (free_sub_free_state s, om)
Hv: valid li (s (dexist i Hi), om)valid li (s (dexist i (free_sub_free_index_obligation_1 i)), om)message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_transition_preservation SubX X (lift_sub_label IM (enum index)) free_sub_free_statemessage, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
Hi: sub_index_prop (enum index) i
li: label (sub_IM (dexist i Hi))
s: state SubX
om: option message
s': state SubX
om': option messagetransition (existT (dexist i Hi) li) (s, om) = (s', om') → transition (lift_sub_label IM (enum index) (existT (dexist i Hi) li)) (free_sub_free_state s, om) = (free_sub_free_state s', om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
Hi: sub_index_prop (enum index) i
li: label (sub_IM (dexist i Hi))
s: state SubX
om: option message
s': state SubX
om': option message
si': state (IM i)
_om': option message(state_update IM (free_sub_free_state s) i si', om') = (free_sub_free_state (state_update sub_IM s (dexist i Hi) si'), om')message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
Hi: sub_index_prop (enum index) i
li: label (sub_IM (dexist i Hi))
s: state SubX
om: option message
s': state SubX
om': option message
si': state (IM i)
_om': option message
j: indexstate_update IM (free_sub_free_state s) i si' j = state_update sub_IM s (dexist i Hi) si' (free_sub_free_index j)by destruct (decide (i = j)); subst; state_update_simpl.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM message
i: index
Hi: sub_index_prop (enum index) i
li: label (sub_IM (dexist i Hi))
s: state SubX
om: option message
s': state SubX
om': option message
si': state (IM i)
_om': option message
j: indexstate_update IM (free_sub_free_state s) i si' j = state_update (SubProjectionTraces.sub_IM IM (enum index)) s (dexist i Hi) si' (dexist j (free_sub_free_index_obligation_1 j))intros s Hi i; rapply Hi.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_projection_initial_state_preservation SubX X free_sub_free_stateby intros m [[i Hi] Him]; exists i. Qed. End sec_sub_composition_all. Section sec_sub_composition_element.message, index: Type
EqDecision0: EqDecision index
H: finite.Finite index
IM: index → VLSM message
sub_IM:= SubProjectionTraces.sub_IM IM (enum index): sub_index (enum index) → VLSM message
constraint: composite_label IM → composite_state IM * option message → Prop
X:= composite_vlsm IM constraint: VLSM message
SubX:= composite_vlsm sub_IM (free_sub_free_constraint constraint): VLSM messagestrong_embedding_initial_message_preservation SubX X
Relating a sub-composition with one of its components
A component can be lifted to a free subcomposition
Context {message : Type} `{FinSet index Ci} (IM : index -> VLSM message) (indices : Ci) (j : index) (Hj : j ∈ elements indices) . Definition sub_element_label (l : label (IM j)) : composite_label (sub_IM IM (elements indices)) := existT (dexist j Hj) l. Definition sub_element_state (s : state (IM j)) sub_i : state (sub_IM IM (elements indices) sub_i) := match (decide (` sub_i = j)) with | left e => eq_rect_r (fun j : index => state (IM j)) s e | right _ => ` (vs0 (IM (` sub_i))) end.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
s: state (IM j)
H_j: sub_index_prop (elements indices) jsub_element_state s (dexist j H_j) = smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
s: state (IM j)
H_j: sub_index_prop (elements indices) jsub_element_state s (dexist j H_j) = sby rewrite (decide_True_pi eq_refl). Qed.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
s: state (IM j)
H_j: sub_index_prop (elements indices) jmatch decide (j = j) with | left e => eq_rect_r (λ j : index, state (IM j)) s e | right _ => `(vs0 (IM j)) end = smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
s: state (IM j)
i: index
Hi: sub_index_prop (elements indices) ii ≠ j → sub_element_state s (dexist i Hi) = `(vs0 (IM i))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
s: state (IM j)
i: index
Hi: sub_index_prop (elements indices) ii ≠ j → sub_element_state s (dexist i Hi) = `(vs0 (IM i))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
s: state (IM j)
i: index
Hi: sub_index_prop (elements indices) i
Hij: i ≠ jsub_element_state s (dexist i Hi) = `(vs0 (IM i))by case_decide; congruence. Qed. #[local] Hint Rewrite @sub_element_state_eq : state_update. #[local] Hint Rewrite @sub_element_state_neq using done : state_update.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
s: state (IM j)
i: index
Hi: sub_index_prop (elements indices) i
Hij: i ≠ jmatch decide (i = j) with | left e => eq_rect_r (λ j : index, state (IM j)) s e | right _ => `(vs0 (IM i)) end = `(vs0 (IM i))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messageVLSM_embedding PrePXj PreQSubFree sub_element_label sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messageVLSM_embedding PrePXj PreQSubFree sub_element_label sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_embedding_valid_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices))) sub_element_label sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_embedding_transition_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices))) sub_element_label sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_projection_initial_state_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices))) sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_embedding_initial_message_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices)))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_embedding_valid_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices))) sub_element_label sub_element_stateby rewrite sub_element_state_eq.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
l: label (IM j)
s: state (IM j)
om: option message
Hv: valid l (s, om)valid l (sub_element_state s (dexist j Hj), om)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_embedding_transition_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices))) sub_element_label sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
l: label (IM j)
s: state (IM j)
om: option message
s': state (IM j)
om': option messagetransition l (s, om) = (s', om') → (let (si', om') := transition l (sub_element_state s (dexist j Hj), om) in (state_update (sub_IM IM (elements indices)) (sub_element_state s) (dexist j Hj) si', om')) = (sub_element_state s', om')message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
l: label (IM j)
s: state (IM j)
om: option message
s': state (IM j)
om': option messagetransition l (s, om) = (s', om') → (let (si', om') := transition l (s, om) in (state_update (sub_IM IM (elements indices)) (sub_element_state s) (dexist j Hj) si', om')) = (sub_element_state s', om')message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
l: label (IM j)
s: state (IM j)
om: option message
s': state (IM j)
om': option message
Ht: transition l (s, om) = (s', om')state_update (sub_IM IM (elements indices)) (sub_element_state s) (dexist j Hj) s' = sub_element_state s'message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
l: label (IM j)
s: state (IM j)
om: option message
s': state (IM j)
om': option message
Ht: transition l (s, om) = (s', om')
sub_i: sub_index (elements indices)state_update (sub_IM IM (elements indices)) (sub_element_state s) (dexist j Hj) s' sub_i = sub_element_state s' sub_iby destruct (decide (i = j)); subst; state_update_simpl.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
l: label (IM j)
s: state (IM j)
om: option message
s': state (IM j)
om': option message
Ht: transition l (s, om) = (s', om')
i: index
Hi: sub_index_prop (elements indices) istate_update (sub_IM IM (elements indices)) (sub_element_state s) (dexist j Hj) s' (dexist i Hi) = sub_element_state s' (dexist i Hi)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_projection_initial_state_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices))) sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
sj: state (IM j)
Hsj: initial_state_prop sj
sub_i: sub_index (elements indices)initial_state_prop (sub_element_state sj sub_i)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
sj: state (IM j)
Hsj: initial_state_prop sj
i: index
Hi: sub_index_prop (elements indices) iinitial_state_prop (sub_element_state sj (dexist i Hi))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
sj: state (IM j)
Hsj: initial_state_prop sj
Hi: sub_index_prop (elements indices) jinitial_state_prop (sub_element_state sj (dexist j Hi))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
sj: state (IM j)
Hsj: initial_state_prop sj
i: index
Hi: sub_index_prop (elements indices) i
n: i ≠ jinitial_state_prop (sub_element_state sj (dexist i Hi))by rewrite sub_element_state_eq.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
sj: state (IM j)
Hsj: initial_state_prop sj
Hi: sub_index_prop (elements indices) jinitial_state_prop (sub_element_state sj (dexist j Hi))by rewrite sub_element_state_neq; destruct (vs0 (IM i)).message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
sj: state (IM j)
Hsj: initial_state_prop sj
i: index
Hi: sub_index_prop (elements indices) i
n: i ≠ jinitial_state_prop (sub_element_state sj (dexist i Hi))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM messagestrong_embedding_initial_message_preservation (IM j) (free_composite_vlsm (sub_IM IM (elements indices)))by exists (dexist j Hj), (exist _ m Hm). Qed.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
PrePXj:= preloaded_vlsm (IM j) P: VLSM message
PreQSubFree:= preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q: VLSM message
m: message
Hm: initial_message_prop minitial_message_prop mmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm∀ m : message, can_emit (preloaded_vlsm (IM j) P) m → can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) mmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm∀ m : message, can_emit (preloaded_vlsm (IM j) P) m → can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) mmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) mcan_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) mmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) mVLSM_incl_part ?MX (preloaded_vlsm_machine (free_composite_vlsm (sub_IM IM (elements indices))) Q)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) mcan_emit {| vlsm_type := free_composite_vlsm (sub_IM IM (elements indices)); vlsm_machine := ?MX |} mmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) mVLSM_incl_part ?MX (preloaded_vlsm_machine (free_composite_vlsm (sub_IM IM (elements indices))) Q)by itauto.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) m∀ m : message, Q m ∨ P m → Q m ∨ valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) mmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) mcan_emit {| vlsm_type := free_composite_vlsm (sub_IM IM (elements indices)); vlsm_machine := preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) (λ m : message, Q m ∨ P m) |} mmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) mVLSM_embedding (preloaded_vlsm (IM j) P) {| vlsm_type := free_composite_vlsm (sub_IM IM (elements indices)); vlsm_machine := preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) (λ m : message, Q m ∨ P m) |} ?label_project ?state_projectby itauto. Qed.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
P, Q: message → Prop
HPvalid: ∀ dm : message, P dm → valid_message_prop (preloaded_vlsm (free_composite_vlsm (sub_IM IM (elements indices))) Q) dm
m: message
Hm: can_emit (preloaded_vlsm (IM j) P) m∀ m : message, P m → Q m ∨ P m
A subcomposition can be projected to one component
Definition sub_label_element_project (l : composite_label (sub_IM IM (elements indices))) : option (label (IM j)) := match decide (j = ` (projT1 l)) with | left e => Some (eq_rect_r (fun j => label (IM j)) (projT2 l) e) | right _ => None end. Definition sub_state_element_project (s : composite_state (sub_IM IM (elements indices))) : state (IM j) := s (dexist j Hj).message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ lX : composite_label (sub_IM IM (elements indices)), sub_label_element_project lX = None → ∀ (s : composite_state (sub_IM IM (elements indices))) (om : option message) (s' : composite_state (sub_IM IM (elements indices))) (om' : option message), composite_transition (sub_IM IM (elements indices)) lX (s, om) = (s', om') → sub_state_element_project s' = sub_state_element_project smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ lX : composite_label (sub_IM IM (elements indices)), sub_label_element_project lX = None → ∀ (s : composite_state (sub_IM IM (elements indices))) (om : option message) (s' : composite_state (sub_IM IM (elements indices))) (om' : option message), composite_transition (sub_IM IM (elements indices)) lX (s, om) = (s', om') → sub_state_element_project s' = sub_state_element_project smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
sub_i: sub_index (elements indices)
li: label (sub_IM IM (elements indices) sub_i)
HlX: sub_label_element_project (existT sub_i li) = None
s: composite_state (sub_IM IM (elements indices))
om: option message
s': composite_state (sub_IM IM (elements indices))
om': option message
HtX: composite_transition (sub_IM IM (elements indices)) (existT sub_i li) (s, om) = ( s', om')sub_state_element_project s' = sub_state_element_project smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
i: index
Hi: sub_index_prop (elements indices) i
li: label (sub_IM IM (elements indices) (dexist i Hi))
HlX: sub_label_element_project (existT (dexist i Hi) li) = None
s: composite_state (sub_IM IM (elements indices))
om: option message
s': composite_state (sub_IM IM (elements indices))
om': option message
HtX: composite_transition (sub_IM IM (elements indices)) (existT (dexist i Hi) li) ( s, om) = (s', om')sub_state_element_project s' = sub_state_element_project smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
i: index
Hi: sub_index_prop (elements indices) i
li: label (sub_IM IM (elements indices) (dexist i Hi))
HlX: match decide (j = i) with | left e => Some (eq_rect_r (λ j : index, label (IM j)) li e) | right _ => None end = None
s: composite_state (sub_IM IM (elements indices))
om: option message
s': composite_state (sub_IM IM (elements indices))
om': option message
HtX: (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM (elements indices)) s (dexist i Hi) si', om')) = ( s', om')sub_state_element_project s' = sub_state_element_project smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
i: index
Hi: sub_index_prop (elements indices) i
li: label (sub_IM IM (elements indices) (dexist i Hi))
Hij: j ≠ i
HlX: None = None
s: composite_state (sub_IM IM (elements indices))
om: option message
s': composite_state (sub_IM IM (elements indices))
om': option message
HtX: (let (si', om') := transition li (s (dexist i Hi), om) in (state_update (sub_IM IM (elements indices)) s (dexist i Hi) si', om')) = ( s', om')sub_state_element_project s' = sub_state_element_project smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
i: index
Hi: sub_index_prop (elements indices) i
li: label (sub_IM IM (elements indices) (dexist i Hi))
Hij: j ≠ i
HlX: None = None
s: composite_state (sub_IM IM (elements indices))
om: option message
s': composite_state (sub_IM IM (elements indices))
om': option message
si': state (sub_IM IM (elements indices) (dexist i Hi))
_om': option message
HtX: (state_update (sub_IM IM (elements indices)) s (dexist i Hi) si', _om') = ( s', om')sub_state_element_project s' = sub_state_element_project smessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
i: index
Hi: sub_index_prop (elements indices) i
li: label (sub_IM IM (elements indices) (dexist i Hi))
Hij: j ≠ i
HlX: None = None
s: composite_state (sub_IM IM (elements indices))
om: option message
s': composite_state (sub_IM IM (elements indices))
om': option message
si': state (sub_IM IM (elements indices) (dexist i Hi))
_om': option messagesub_state_element_project (state_update (sub_IM IM (elements indices)) s (dexist i Hi) si') = sub_state_element_project sby state_update_simpl. Qed.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
i: index
Hi: sub_index_prop (elements indices) i
li: label (sub_IM IM (elements indices) (dexist i Hi))
Hij: j ≠ i
HlX: None = None
s: composite_state (sub_IM IM (elements indices))
om: option message
s': composite_state (sub_IM IM (elements indices))
om': option message
si': state (sub_IM IM (elements indices) (dexist i Hi))
_om': option messagestate_update (sub_IM IM (elements indices)) s (dexist i Hi) si' (dexist j Hj) = s (dexist j Hj)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ lY : label (IM j), sub_label_element_project (sub_element_label lY) = Some lYmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ lY : label (IM j), sub_label_element_project (sub_element_label lY) = Some lYmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
lY: label (IM j)sub_label_element_project (sub_element_label lY) = Some lYby rewrite (decide_True_pi eq_refl). Qed.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
lY: label (IM j)match decide (j = j) with | left e => Some (eq_rect_r (λ j : index, label (IM j)) lY e) | right _ => None end = Some lYmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ sY : state (IM j), sub_state_element_project (sub_element_state sY) = sYmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ sY : state (IM j), sub_state_element_project (sub_element_state sY) = sYmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
sY: state (IM j)sub_state_element_project (sub_element_state sY) = sYby rewrite (decide_True_pi eq_refl). Qed.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
sY: state (IM j)match decide (j = j) with | left e => eq_rect_r (λ j : index, state (IM j)) sY e | right _ => `(vs0 (IM j)) end = sYmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ (lX1 lX2 : composite_label (sub_IM IM (elements indices))) (lY : label (IM j)), sub_label_element_project lX1 = Some lY → sub_label_element_project lX2 = Some lY → ∀ sX1 sX2 : composite_state (sub_IM IM (elements indices)), sub_state_element_project sX1 = sub_state_element_project sX2 → ∀ (iom : option message) (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), composite_transition (sub_IM IM (elements indices)) lX1 (sX1, iom) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), composite_transition (sub_IM IM (elements indices)) lX2 (sX2, iom) = (sX2', oom2) → sub_state_element_project sX1' = sub_state_element_project sX2' ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices∀ (lX1 lX2 : composite_label (sub_IM IM (elements indices))) (lY : label (IM j)), sub_label_element_project lX1 = Some lY → sub_label_element_project lX2 = Some lY → ∀ sX1 sX2 : composite_state (sub_IM IM (elements indices)), sub_state_element_project sX1 = sub_state_element_project sX2 → ∀ (iom : option message) (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), composite_transition (sub_IM IM (elements indices)) lX1 (sX1, iom) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), composite_transition (sub_IM IM (elements indices)) lX2 (sX2, iom) = (sX2', oom2) → sub_state_element_project sX1' = sub_state_element_project sX2' ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
sub_j1: sub_index (elements indices)
lj1: label (sub_IM IM (elements indices) sub_j1)
sub_j2: sub_index (elements indices)
lj2: label (sub_IM IM (elements indices) sub_j2)
lj: label (IM j)sub_label_element_project (existT sub_j1 lj1) = Some lj → sub_label_element_project (existT sub_j2 lj2) = Some lj → ∀ sX1 sX2 : composite_state (sub_IM IM (elements indices)), sub_state_element_project sX1 = sub_state_element_project sX2 → ∀ (iom : option message) (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), composite_transition (sub_IM IM (elements indices)) (existT sub_j1 lj1) (sX1, iom) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), composite_transition (sub_IM IM (elements indices)) (existT sub_j2 lj2) (sX2, iom) = (sX2', oom2) → sub_state_element_project sX1' = sub_state_element_project sX2' ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
j1: index
Hj1: sub_index_prop (elements indices) j1
lj1: label (sub_IM IM (elements indices) (dexist j1 Hj1))
j2: index
Hj2: sub_index_prop (elements indices) j2
lj2: label (sub_IM IM (elements indices) (dexist j2 Hj2))
lj: label (IM j)sub_label_element_project (existT (dexist j1 Hj1) lj1) = Some lj → sub_label_element_project (existT (dexist j2 Hj2) lj2) = Some lj → ∀ sX1 sX2 : composite_state (sub_IM IM (elements indices)), sub_state_element_project sX1 = sub_state_element_project sX2 → ∀ (iom : option message) (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), composite_transition (sub_IM IM (elements indices)) (existT (dexist j1 Hj1) lj1) (sX1, iom) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), composite_transition (sub_IM IM (elements indices)) (existT (dexist j2 Hj2) lj2) (sX2, iom) = (sX2', oom2) → sub_state_element_project sX1' = sub_state_element_project sX2' ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
j1: index
Hj1: sub_index_prop (elements indices) j1
lj1: label (sub_IM IM (elements indices) (dexist j1 Hj1))
j2: index
Hj2: sub_index_prop (elements indices) j2
lj2: label (sub_IM IM (elements indices) (dexist j2 Hj2))
lj: label (IM j)match decide (j = j1) with | left e => Some (eq_rect_r (λ j : index, label (IM j)) lj1 e) | right _ => None end = Some lj → match decide (j = j2) with | left e => Some (eq_rect_r (λ j : index, label (IM j)) lj2 e) | right _ => None end = Some lj → ∀ sX1 sX2 : composite_state (sub_IM IM (elements indices)), sub_state_element_project sX1 = sub_state_element_project sX2 → ∀ (iom : option message) (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), (let (si', om') := transition lj1 (sX1 (dexist j1 Hj1), iom) in (state_update (sub_IM IM (elements indices)) sX1 (dexist j1 Hj1) si', om')) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), (let (si', om') := transition lj2 (sX2 (dexist j2 Hj2), iom) in (state_update (sub_IM IM (elements indices)) sX2 (dexist j2 Hj2) si', om')) = (sX2', oom2) → sub_state_element_project sX1' = sub_state_element_project sX2' ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
Hj1: sub_index_prop (elements indices) j
lj1: label (sub_IM IM (elements indices) (dexist j Hj1))
Hj2: sub_index_prop (elements indices) j
H8, H11: Some lj1 = Some lj1∀ sX1 sX2 : composite_state (sub_IM IM (elements indices)), sub_state_element_project sX1 = sub_state_element_project sX2 → ∀ (iom : option message) (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), (let (si', om') := transition lj1 (sX1 (dexist j Hj1), iom) in (state_update (sub_IM IM (elements indices)) sX1 (dexist j Hj1) si', om')) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), (let (si', om') := transition lj1 (sX2 (dexist j Hj2), iom) in (state_update (sub_IM IM (elements indices)) sX2 (dexist j Hj2) si', om')) = (sX2', oom2) → sub_state_element_project sX1' = sub_state_element_project sX2' ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
Hj1: sub_index_prop (elements indices) j
lj1: label (sub_IM IM (elements indices) (dexist j Hj1))
Hj2: sub_index_prop (elements indices) j
H8, H11: Some lj1 = Some lj1∀ sX1 sX2 : composite_state (sub_IM IM (elements indices)), sX1 (dexist j Hj) = sX2 (dexist j Hj) → ∀ (iom : option message) (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), (let (si', om') := transition lj1 (sX1 (dexist j Hj1), iom) in (state_update (sub_IM IM (elements indices)) sX1 (dexist j Hj1) si', om')) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), (let (si', om') := transition lj1 (sX2 (dexist j Hj2), iom) in (state_update (sub_IM IM (elements indices)) sX2 (dexist j Hj2) si', om')) = (sX2', oom2) → sX1' (dexist j Hj) = sX2' (dexist j Hj) ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
Hj1: sub_index_prop (elements indices) j
lj1: label (sub_IM IM (elements indices) (dexist j Hj1))
Hj2: sub_index_prop (elements indices) j
H8, H11: Some lj1 = Some lj1
sX1, sX2: composite_state (sub_IM IM (elements indices))
Hsjeq: sX1 (dexist j Hj) = sX2 (dexist j Hj)
iom: option message∀ (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), (let (si', om') := transition lj1 (sX1 (dexist j Hj1), iom) in (state_update (sub_IM IM (elements indices)) sX1 (dexist j Hj1) si', om')) = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), (let (si', om') := transition lj1 (sX2 (dexist j Hj2), iom) in (state_update (sub_IM IM (elements indices)) sX2 (dexist j Hj2) si', om')) = (sX2', oom2) → sX1' (dexist j Hj) = sX2' (dexist j Hj) ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
Hj1: sub_index_prop (elements indices) j
lj1: label (sub_IM IM (elements indices) (dexist j Hj1))
Hj2: sub_index_prop (elements indices) j
H8, H11: Some lj1 = Some lj1
sX1, sX2: composite_state (sub_IM IM (elements indices))
Hsjeq: sX1 (dexist j Hj) = sX2 (dexist j Hj)
iom: option message
si': state (IM j)
om': option message∀ (sX1' : composite_state (sub_IM IM (elements indices))) (oom1 : option message), (state_update (sub_IM IM (elements indices)) sX1 (dexist j Hj1) si', om') = (sX1', oom1) → ∀ (sX2' : composite_state (sub_IM IM (elements indices))) (oom2 : option message), (state_update (sub_IM IM (elements indices)) sX2 (dexist j Hj2) si', om') = (sX2', oom2) → sX1' (dexist j Hj) = sX2' (dexist j Hj) ∧ oom1 = oom2by state_update_simpl. Qed. Definition induced_sub_element_projection constraint : VLSM message := projection_induced_validator (pre_induced_sub_projection IM (elements indices) constraint) (IM j) sub_label_element_project sub_state_element_project sub_element_label sub_element_state. Definition pre_induced_sub_element_projection constraint : VLSM message := preloaded_with_all_messages_vlsm (induced_sub_element_projection constraint).message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
Hj1: sub_index_prop (elements indices) j
lj1: label (sub_IM IM (elements indices) (dexist j Hj1))
Hj2: sub_index_prop (elements indices) j
H8, H11: Some lj1 = Some lj1
sX1, sX2: composite_state (sub_IM IM (elements indices))
Hsjeq: sX1 (dexist j Hj) = sX2 (dexist j Hj)
iom: option message
si': state (IM j)
om': option message
sX1': composite_state (sub_IM IM (elements indices))
oom1: option message
sX2': composite_state (sub_IM IM (elements indices))
oom2: option messagestate_update (sub_IM IM (elements indices)) sX1 (dexist j Hj1) si' (dexist j Hj) = state_update (sub_IM IM (elements indices)) sX2 (dexist j Hj2) si' (dexist j Hj) ∧ oom2 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → PropVLSM_projection (pre_induced_sub_projection IM (elements indices) constraint) (pre_induced_sub_element_projection constraint) sub_label_element_project sub_state_element_projectmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → PropVLSM_projection (pre_induced_sub_projection IM (elements indices) constraint) (pre_induced_sub_element_projection constraint) sub_label_element_project sub_state_element_projectmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propinduced_validator_label_lift_prop sub_label_element_project sub_element_labelmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propinduced_validator_state_lift_prop sub_state_element_project sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propinduced_validator_transition_consistency_Some (pre_induced_sub_projection IM (elements indices) constraint) (IM j) sub_label_element_project sub_state_element_projectmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propweak_projection_transition_consistency_None (pre_induced_sub_projection IM (elements indices) constraint) (IM j) sub_label_element_project sub_state_element_projectby intro; apply sub_element_label_project.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propinduced_validator_label_lift_prop sub_label_element_project sub_element_labelby intro; apply sub_element_state_project.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propinduced_validator_state_lift_prop sub_state_element_project sub_element_statemessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propinduced_validator_transition_consistency_Some (pre_induced_sub_projection IM (elements indices) constraint) (IM j) sub_label_element_project sub_state_element_projectmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Prop
lX1, lX2: label (pre_induced_sub_projection IM (elements indices) constraint)
lY: label (IM j)
Hl1: sub_label_element_project lX1 = Some lY
Hl2: sub_label_element_project lX2 = Some lY
sX1, sX2: state (pre_induced_sub_projection IM (elements indices) constraint)
Hs: sub_state_element_project sX1 = sub_state_element_project sX2
iom: option message
sX1': state (pre_induced_sub_projection IM (elements indices) constraint)
oom1: option message
Ht1: transition lX1 (sX1, iom) = (sX1', oom1)
sX2': state (pre_induced_sub_projection IM (elements indices) constraint)
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)sub_state_element_project sX1' = sub_state_element_project sX2' ∧ oom1 = oom2message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Prop
lX1, lX2: label (pre_induced_sub_projection IM (elements indices) constraint)
lY: label (IM j)
Hl1: sub_label_element_project lX1 = Some lY
Hl2: sub_label_element_project lX2 = Some lY
sX1, sX2: state (pre_induced_sub_projection IM (elements indices) constraint)
Hs: sub_state_element_project sX1 = sub_state_element_project sX2
iom: option message
sX1': state (pre_induced_sub_projection IM (elements indices) constraint)
oom1: option message
Ht1: transition lX1 (sX1, iom) = (sX1', oom1)
sX2': state (pre_induced_sub_projection IM (elements indices) constraint)
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_transition (sub_IM IM (elements indices)) lX1 (sX1, ?iom) = (sX1', oom1)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Prop
lX1, lX2: label (pre_induced_sub_projection IM (elements indices) constraint)
lY: label (IM j)
Hl1: sub_label_element_project lX1 = Some lY
Hl2: sub_label_element_project lX2 = Some lY
sX1, sX2: state (pre_induced_sub_projection IM (elements indices) constraint)
Hs: sub_state_element_project sX1 = sub_state_element_project sX2
iom: option message
sX1': state (pre_induced_sub_projection IM (elements indices) constraint)
oom1: option message
Ht1: transition lX1 (sX1, iom) = (sX1', oom1)
sX2': state (pre_induced_sub_projection IM (elements indices) constraint)
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_transition (sub_IM IM (elements indices)) lX2 (sX2, ?iom) = (sX2', oom2)by rewrite induced_sub_projection_transition_is_composite in Ht1.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Prop
lX1, lX2: label (pre_induced_sub_projection IM (elements indices) constraint)
lY: label (IM j)
Hl1: sub_label_element_project lX1 = Some lY
Hl2: sub_label_element_project lX2 = Some lY
sX1, sX2: state (pre_induced_sub_projection IM (elements indices) constraint)
Hs: sub_state_element_project sX1 = sub_state_element_project sX2
iom: option message
sX1': state (pre_induced_sub_projection IM (elements indices) constraint)
oom1: option message
Ht1: transition lX1 (sX1, iom) = (sX1', oom1)
sX2': state (pre_induced_sub_projection IM (elements indices) constraint)
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_transition (sub_IM IM (elements indices)) lX1 (sX1, ?iom) = (sX1', oom1)by rewrite induced_sub_projection_transition_is_composite in Ht2.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Prop
lX1, lX2: label (pre_induced_sub_projection IM (elements indices) constraint)
lY: label (IM j)
Hl1: sub_label_element_project lX1 = Some lY
Hl2: sub_label_element_project lX2 = Some lY
sX1, sX2: state (pre_induced_sub_projection IM (elements indices) constraint)
Hs: sub_state_element_project sX1 = sub_state_element_project sX2
iom: option message
sX1': state (pre_induced_sub_projection IM (elements indices) constraint)
oom1: option message
Ht1: transition lX1 (sX1, iom) = (sX1', oom1)
sX2': state (pre_induced_sub_projection IM (elements indices) constraint)
oom2: option message
Ht2: transition lX2 (sX2, iom) = (sX2', oom2)composite_transition (sub_IM IM (elements indices)) lX2 (sX2, iom) = (sX2', oom2)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Propweak_projection_transition_consistency_None (pre_induced_sub_projection IM (elements indices) constraint) (IM j) sub_label_element_project sub_state_element_projectmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Prop
lX: label (pre_induced_sub_projection IM (elements indices) constraint)
HlX: sub_label_element_project lX = None
s: state (pre_induced_sub_projection IM (elements indices) constraint)
om: option message
s': state (pre_induced_sub_projection IM (elements indices) constraint)
om': option message
Ht: transition lX (s, om) = (s', om')sub_state_element_project s' = sub_state_element_project sby setoid_rewrite <- (induced_sub_projection_transition_is_composite _ _ constraint). Qed. End sec_sub_composition_element. #[export] Hint Rewrite @sub_element_state_eq : state_update. #[export] Hint Rewrite @sub_element_state_neq using done : state_update. Section sec_sub_composition_preloaded_lift. Context {message : Type} `{EqDecision index} (IM : index -> VLSM message) indices (Free := free_composite_vlsm IM) (PreFree := preloaded_with_all_messages_vlsm Free) (SubFree := free_composite_vlsm (sub_IM IM indices)) (PreSubFree := preloaded_with_all_messages_vlsm SubFree) .message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
IM: index → VLSM message
indices: Ci
j: index
Hj: j ∈ elements indices
constraint: composite_label IM → composite_state IM * option message → Prop
lX: label (pre_induced_sub_projection IM (elements indices) constraint)
HlX: sub_label_element_project lX = None
s: state (pre_induced_sub_projection IM (elements indices) constraint)
om: option message
s': state (pre_induced_sub_projection IM (elements indices) constraint)
om': option message
Ht: transition lX (s, om) = (s', om')composite_transition (sub_IM IM (elements indices)) lX (s, om) = (s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → PropVLSM_embedding (preloaded_vlsm SubFree seed) (preloaded_vlsm Free seed) (lift_sub_label IM indices) (lift_sub_state IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → PropVLSM_embedding (preloaded_vlsm SubFree seed) (preloaded_vlsm Free seed) (lift_sub_label IM indices) (lift_sub_state IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
l: label SubFree
s: state SubFree
om: option message
H: valid l (s, om)valid (lift_sub_label IM indices l) (lift_sub_state IM indices s, om)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
l: label SubFree
s: state SubFree
om: option message
s': state SubFree
om': option message
H: transition l (s, om) = (s', om')transition (lift_sub_label IM indices l) (lift_sub_state IM indices s, om) = (lift_sub_state IM indices s', om')message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
s: state SubFree
H: initial_state_prop sinitial_state_prop (lift_sub_state IM indices s)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
m: message
H: initial_message_prop minitial_message_prop mby cbn; apply lift_sub_valid, H.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
l: label SubFree
s: state SubFree
om: option message
H: valid l (s, om)valid (lift_sub_label IM indices l) (lift_sub_state IM indices s, om)by rapply lift_sub_transition.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
l: label SubFree
s: state SubFree
om: option message
s': state SubFree
om': option message
H: transition l (s, om) = (s', om')transition (lift_sub_label IM indices l) (lift_sub_state IM indices s, om) = (lift_sub_state IM indices s', om')by apply (lift_sub_state_initial IM).message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
s: state SubFree
H: initial_state_prop sinitial_state_prop (lift_sub_state IM indices s)by apply (lift_sub_message_initial IM indices). Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
seed: message → Prop
m: message
H: initial_message_prop minitial_message_prop mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM messageVLSM_embedding SubFree Free (lift_sub_label IM indices) (lift_sub_state IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM messageVLSM_embedding SubFree Free (lift_sub_label IM indices) (lift_sub_state IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message∀ (sX : state SubFree) (trX : list transition_item), finite_valid_trace SubFree sX trX → finite_valid_trace Free (lift_sub_state IM indices sX) (pre_VLSM_embedding_finite_trace_project SubFree Free (lift_sub_label IM indices) (lift_sub_state IM indices) trX)by apply (VLSM_eq_finite_valid_trace (vlsm_is_preloaded_with_False Free)), (VLSM_embedding_finite_valid_trace (lift_sub_free_preloaded_with_embedding _)), (VLSM_eq_finite_valid_trace (vlsm_is_preloaded_with_False SubFree)). Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
sX: state SubFree
trX: list transition_item
HtrX: finite_valid_trace SubFree sX trXfinite_valid_trace Free (lift_sub_state IM indices sX) (pre_VLSM_embedding_finite_trace_project SubFree Free (lift_sub_label IM indices) (lift_sub_state IM indices) trX)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM messageVLSM_embedding PreSubFree PreFree (lift_sub_label IM indices) (lift_sub_state IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM messageVLSM_embedding PreSubFree PreFree (lift_sub_label IM indices) (lift_sub_state IM indices)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message∀ (sX : state PreSubFree) (trX : list transition_item), finite_valid_trace PreSubFree sX trX → finite_valid_trace PreFree (lift_sub_state IM indices sX) (pre_VLSM_embedding_finite_trace_project PreSubFree PreFree (lift_sub_label IM indices) (lift_sub_state IM indices) trX)by apply (VLSM_embedding_finite_valid_trace (lift_sub_free_preloaded_with_embedding _)). Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
sX: state PreSubFree
trX: list transition_item
HtrX: finite_valid_trace PreSubFree sX trXfinite_valid_trace PreFree (lift_sub_state IM indices sX) (pre_VLSM_embedding_finite_trace_project PreSubFree PreFree (lift_sub_label IM indices) (lift_sub_state IM indices) trX)
Deriving reachable-validity for the component from the input validity
w.r.t. a sub_composition preloaded with messages.
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
constraint: composite_label (sub_IM IM indices) → composite_state (sub_IM IM indices) * option message → Prop
Q: message → Prop
i: index
Hi: sub_index_prop indices i
li: (λ n : sub_index indices, label (sub_IM IM indices n)) (dexist i Hi)
sub_s: state (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q)
im: messageinput_valid (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q) (existT (dexist i Hi) li) (sub_s, Some im) → input_constrained (IM i) li (lift_sub_state IM indices sub_s i, Some im)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
constraint: composite_label (sub_IM IM indices) → composite_state (sub_IM IM indices) * option message → Prop
Q: message → Prop
i: index
Hi: sub_index_prop indices i
li: (λ n : sub_index indices, label (sub_IM IM indices n)) (dexist i Hi)
sub_s: state (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q)
im: messageinput_valid (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q) (existT (dexist i Hi) li) (sub_s, Some im) → input_constrained (IM i) li (lift_sub_state IM indices sub_s i, Some im)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
constraint: composite_label (sub_IM IM indices) → composite_state (sub_IM IM indices) * option message → Prop
Q: message → Prop
i: index
Hi: sub_index_prop indices i
li: (λ n : sub_index indices, label (sub_IM IM indices n)) (dexist i Hi)
sub_s: state (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q)
im: message
Ht_sub: input_valid (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q) (existT (dexist i Hi) li) ( sub_s, Some im)input_constrained (IM i) li (lift_sub_state IM indices sub_s i, Some im)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
constraint: composite_label (sub_IM IM indices) → composite_state (sub_IM IM indices) * option message → Prop
Q: message → Prop
i: index
Hi: sub_index_prop indices i
li: (λ n : sub_index indices, label (sub_IM IM indices n)) (dexist i Hi)
sub_s: state (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q)
im: message
Ht_sub: input_valid (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q) (existT (dexist i Hi) li) ( sub_s, Some im)input_valid (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) (existT i li) (lift_sub_state IM indices sub_s, Some im)message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
constraint: composite_label (sub_IM IM indices) → composite_state (sub_IM IM indices) * option message → Prop
Q: message → Prop
i: index
Hi: sub_index_prop indices i
li: (λ n : sub_index indices, label (sub_IM IM indices n)) (dexist i Hi)
sub_s: state (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q)
im: message
Ht_sub: input_valid (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q) (existT (dexist i Hi) li) ( sub_s, Some im)input_constrained (free_composite_vlsm (sub_IM IM indices)) (existT (dexist i Hi) li) (sub_s, Some im)by apply constrained_preloaded_vlsm_incl_preloaded_with_all_messages. Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
constraint: composite_label (sub_IM IM indices) → composite_state (sub_IM IM indices) * option message → Prop
Q: message → Prop
i: index
Hi: sub_index_prop indices i
li: (λ n : sub_index indices, label (sub_IM IM indices n)) (dexist i Hi)
sub_s: state (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q)
im: message
Ht_sub: input_valid (preloaded_vlsm (composite_vlsm (sub_IM IM indices) constraint) Q) (existT (dexist i Hi) li) ( sub_s, Some im)VLSM_incl_part (preloaded_vlsm_machine (composite_vlsm (sub_IM IM indices) constraint) Q) (preloaded_vlsm_machine (free_composite_vlsm (sub_IM IM indices)) (λ _ : message, True))message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
Hj: option_map A (sender m) = Some jcan_emit PreSubFree m → can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
Hj: option_map A (sender m) = Some jcan_emit PreSubFree m → can_emit (preloaded_with_all_messages_vlsm (IM j)) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
Hj: option_map A (sender m) = Some j
Hemit: can_emit PreSubFree mcan_emit (preloaded_with_all_messages_vlsm (IM j)) mby apply (VLSM_embedding_can_emit lift_sub_preloaded_free_embedding). Qed.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
validator: Type
A: validator → index
sender: message → option validator
Hsender_safety: sender_safety_alt_prop IM A sender
j: index
m: message
Hj: option_map A (sender m) = Some j
Hemit: can_emit PreSubFree mcan_emit (preloaded_with_all_messages_vlsm (free_composite_vlsm IM)) m
If a component can emit a message, it can also emit it in a subcomposition with
other components, and starting with more preloaded messages.
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
j: index
m: message
Hj: j ∈ indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q mcan_emit (preloaded_vlsm (IM j) P) m → can_emit (preloaded_vlsm SubFree Q) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
j: index
m: message
Hj: j ∈ indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q mcan_emit (preloaded_vlsm (IM j) P) m → can_emit (preloaded_vlsm SubFree Q) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
j: index
m: message
Hj: j ∈ indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
Hemit: can_emit (preloaded_vlsm (IM j) P) mcan_emit (preloaded_vlsm SubFree Q) mby apply (VLSM_embedding_can_emit Hproj). Qed. End sec_sub_composition_preloaded_lift. Section sec_empty_sub_composition.message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Free:= free_composite_vlsm IM: VLSM message
PreFree:= preloaded_with_all_messages_vlsm Free: VLSM message
SubFree:= free_composite_vlsm (sub_IM IM indices): VLSM message
PreSubFree:= preloaded_with_all_messages_vlsm SubFree: VLSM message
j: index
m: message
Hj: j ∈ indices
P, Q: message → Prop
PimpliesQ: ∀ m : message, P m → Q m
Hemit: can_emit (preloaded_vlsm (IM j) P) m
Hproj: VLSM_embedding (preloaded_vlsm (sub_IM IM indices (dexist j Hj)) P) (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) Q) (lift_to_composite_label (sub_IM IM indices) (dexist j Hj)) (lift_to_composite_state' (sub_IM IM indices) (dexist j Hj))can_emit (preloaded_vlsm SubFree Q) m
A subcomposition with no components
Context
{message : Type}
`{EqDecision index}
(IM : index -> VLSM message)
(indices : list index)
(Hno_indices : indices = [])
.
If a sub-composition can_emit a message then its sender must be one of
the components of the sub-composition.
message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Hno_indices: indices = []
P: message → Prop∀ m : message, ¬ can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) mmessage, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Hno_indices: indices = []
P: message → Prop∀ m : message, ¬ can_emit (preloaded_vlsm (free_composite_vlsm (sub_IM IM indices)) P) mby intro sub_i; destruct_dec_sig sub_i i Hi Heqsub_i; subst; inversion Hi. Qed. End sec_empty_sub_composition. Section sec_update_IM. Context {message : Type} `{FinSet index Ci} `{finite.Finite index} (IM : index -> VLSM message) (selection : Ci) . Definition update_IM (replacement_IM : sub_index (elements selection) -> VLSM message) (i : index) : VLSM message := match decide (i ∈ elements selection) with | left i_in => replacement_IM (@dexist _ (sub_index_prop (elements selection)) _ i i_in) | _ => IM i end. (* TODO(bmmoore): use the definition above to provide an alternate definition for fixed-set equivocation model, similar to the one for byzantine traces. *) Context (replacement_IM : sub_index (elements selection) -> VLSM message) (selection_complement : Ci := list_to_set (enum index) ∖ selection) .message, index: Type
EqDecision0: EqDecision index
IM: index → VLSM message
indices: list index
Hno_indices: indices = []
P: message → Prop∀ x : sub_index indices, x ∉ enum (sub_index indices)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)∀ sub_i : sub_index (elements selection_complement), HasBeenSentCapability (sub_IM (update_IM replacement_IM) (elements selection_complement) sub_i)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)∀ sub_i : sub_index (elements selection_complement), HasBeenSentCapability (sub_IM (update_IM replacement_IM) (elements selection_complement) sub_i)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)
sub_i: sub_index (elements selection_complement)HasBeenSentCapability (sub_IM (update_IM replacement_IM) (elements selection_complement) sub_i)message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)
sub_i: sub_index (elements selection_complement)HasBeenSentCapability match decide (`sub_i ∈ elements selection) with | left i_in => replacement_IM (dexist (`sub_i) i_in) | right _ => IM (`sub_i) endmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)
sub_i: sub_index (elements selection_complement)
Hi: `sub_i ∈ elements selectionHasBeenSentCapability (replacement_IM (dexist (`sub_i) Hi))message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)
sub_i: sub_index (elements selection_complement)`sub_i ∉ elements selectionmessage, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)
i: index
Hi: sub_index_prop (elements selection_complement) ii ∉ elements selectionby rewrite elem_of_elements. Qed. End sec_update_IM.message, index, Ci: Type
H: ElemOf index Ci
H0: Empty Ci
H1: Singleton index Ci
H2: Union Ci
H3: Intersection Ci
H4: Difference Ci
H5: Elements index Ci
EqDecision0: EqDecision index
H6: FinSet index Ci
EqDecision1: EqDecision index
H7: finite.Finite index
IM: index → VLSM message
selection: Ci
replacement_IM: sub_index (elements selection) → VLSM message
selection_complement:= list_to_set (enum index) ∖ selection: Ci
H8: ∀ i : index, HasBeenSentCapability (IM i)
i: index
Hi: i ∉ selectioni ∉ elements selection